Python 通过实例变量控制类的特定实例
我想做的是缩短这段代码。对于我所做的每一个类,我都必须在这个类中添加另一个块,这会在一段时间后变得疯狂。我希望能够查看player_id是否与任何类相同,如果它们的id匹配,我希望能够找到它的名称该类的实例。通常,当您需要O1查找时,您需要使用字典创建映射Python 通过实例变量控制类的特定实例,python,python-2.7,Python,Python 2.7,我想做的是缩短这段代码。对于我所做的每一个类,我都必须在这个类中添加另一个块,这会在一段时间后变得疯狂。我希望能够查看player_id是否与任何类相同,如果它们的id匹配,我希望能够找到它的名称该类的实例。通常,当您需要O1查找时,您需要使用字典创建映射 这似乎是正确的答案,但我将把它转换为实际代码,看看它是否有效。谢谢:啊,我不擅长问问题。我没有在课堂上提到名字实际上是一个列表,我不知道这会改变一切。你的回答对所问的问题是正确的,但我认为我所做的事情没有答案。再查一下,显然不可能不失去更改列
这似乎是正确的答案,但我将把它转换为实际代码,看看它是否有效。谢谢:啊,我不擅长问问题。我没有在课堂上提到名字实际上是一个列表,我不知道这会改变一切。你的回答对所问的问题是正确的,但我认为我所做的事情没有答案。再查一下,显然不可能不失去更改列表的能力,这是非常重要的important@AdamBurros你在试着比较列表吗?或者只是确定列表中是否存在一个值?列表中只有两个坐标,比如每个区域的[0,0],所以我想将player_id与坐标进行比较。玩家id也是一个类似[0,0]的列表,同样不擅长提问。我找到了一个解决方法。我列出了所有的类和一个函数,该函数搜索这些类并返回与玩家坐标相同的类,效果很好。可能效率不高,但是呃。谢谢你的帮助
class Class():
def __init__(self, id, name):
self.id = id
self.name = name
class1 = Class(1, "Adam")
class2 = Class(2, "Bob")
class3 = Class(3, "John")
player_id = 1
if player_id == class1.id:
print class1.name
elif player_id == class2.id:
print class2.name
elif player_id == class3.id:
print class3.name
#etc
id_map = {c.id: c for c in [class1, class2, class3]}
print id_map[player_id].name