如何在事先不知道名称的情况下调用类的实例

时间:2017-04-08 23:14:48

标签: python python-3.x class

假设我有一个类的不同实例;

class Person(object):
    def __init__(self, id):
        self.id = id

Joe = Person('123')
Sarah = Person('321')

我现在的问题是,如何在不事先知道名称的情况下使用其中一个实例,例如,我可能会有一些请求名称甚至ID的内容。我如何将其与适当的对象相关联?假设输入了一个id,'123',如何知道它属于Joe对象,然后动态地使用该对象?如果该信息很有用,我正在运行Python 3.6。

1 个答案:

答案 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。 "调用"在编程中有特定的含义:你调用一个函数。你不是在这里打电话。