假设我有一个类的不同实例;
class Person(object):
def __init__(self, id):
self.id = id
Joe = Person('123')
Sarah = Person('321')
我现在的问题是,如何在不事先知道名称的情况下使用其中一个实例,例如,我可能会有一些请求名称甚至ID的内容。我如何将其与适当的对象相关联?假设输入了一个id,'123',如何知道它属于Joe
对象,然后动态地使用该对象?如果该信息很有用,我正在运行Python 3.6。
答案 0 :(得分:5)
当你学习计算机编程时,你可能会听到一个非常真实的笑话,即只有三个重要的数字:0,1和无穷大。换句话说,你不能拥有任何东西,也不能拥有某种东西,但如果你有多个东西,你就必须准备好处理它们中的任何一个。
当你只能有零或一个东西时,把它放在变量中就可以了。但是当你可以拥有任何数量的东西时,这个解决方案很快变得难以处理。程序员喜欢的解决方案是将对象放在容器中,就像列表或字典一样。
例如,字典方法:
people = {"123": Person("123"), "321": Person("321")}
然后乔是people["123"]
。
实际上,您希望将此人的姓名存储在对象中,否则您无法告诉其实际代表的人,因此您需要将其添加到Person
类。当实例化时,您还可以将对象本身添加到主人dict中:
people = {}
class Person(object):
def __init__(self, id, name):
self.id = id
self.name = name
people[id] = self
joe = Person("123", "Joe")
sarah = Person("321", "Sarah")
现在,当您实例化对象时,它们会被ID自动添加到people
dict中,您可以这样访问它们。 (您也可以按名称添加它们,假设名称是唯一的:如果ID和名称永远不会发生冲突,甚至可以添加到同一个字典中。)
N.B。 "调用"在编程中有特定的含义:你调用一个函数。你不是在这里打电话。