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

Cyber​​LX

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

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

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

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

金德尔

在学习计算机程序设计时,您可能会听到一个不太真实的笑话,即只有三个重要的数字:0、1和无穷大。换句话说,您可能什么都不是,也可能什么都不是,但是如果您可以拥有多个,则必须准备好处理任意数量的东西。

当您只能有零个或一个东西时,将其放在变量中就可以了。但是,当您可以拥有任意数量的东西时,此解决方案很快就会变得笨拙。程序员喜欢的解决方案是将对象放在列表或字典之类的容器中

例如,字典方法:

people = {"123": Person("123"), "321": Person("321")}

然后乔是people["123"]

实际上,您也希望将人员的姓名存储在对象中,否则您将无法分辨姓名的真实代表,因此请将其添加到Person班级中。您还可以在实例化该对象时将其自身添加到主命令中:

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")

现在,当您实例化对象时,它们将people通过其ID自动添加到字典中,您可以这样访问它们。(您也可以按名称添加名称,前提是名称是唯一的:如果ID和名称永远不会冲突,即使是同一词典也是如此。)

注意“调用”在编程中有特定含义:调用函数。您在这里什么都没打电话。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不事先知道队列名称的情况下路由到队列?

如何在不事先知道类型的情况下动态构造Scala类?

Ada-(Streams)如何在不事先知道字符串长度的情况下正确调用String'Read()

如何在不事先知道密钥的情况下检索所有localStorage项?

如何在不事先知道的情况下提取网页的URL?

您如何在不知道其名称的情况下调用实现特定接口的类?

如何在不事先知道密钥的情况下更改注册表属性数据的数据

如何在不事先知道文件类型的情况下将base64解码为文件?

如何在不事先知道该值的情况下选择一列中具有相同值的行?

如何在不实例化的情况下调用类的方法?

如何在没有名称空间的情况下调用Ruby类

iOS-如何在不初始化Swift的类的情况下调用方法?

java泛型-如何在知道子类类型和超类的情况下调用子重载方法

有没有办法在不事先知道值的情况下用php更新mysql表?

Kotlin 中抽象类的实例并在不覆盖的情况下调用抽象函数

如何在不首先实例化类的情况下获取完全限定的类名称?

如何在不预先知道要更新哪些字段的情况下连续更新多个字段

如何在不预先知道要设置多少个条件的情况下动态链接Firebase中的条件

在不触发__init__的情况下调用类函数

如何在不创建实例的情况下从C#类调用静态方法

如何在没有结构实例的情况下调用特征方法?

Laravel-如何在不实例化对象的情况下调用静态函数

如何在没有显式类型的情况下调用 haskell 实例

如何在R中进行多因素回归(一般线性模型)而不事先知道预测变量的数量?

如何在不明确限定其名称的情况下调用纯虚函数?

如何在不映射web.xml的情况下调用servlet?

如何在不添加Web参考的情况下调用SOAP Web服务

PL / SQL如何在不获取返回对象的情况下调用函数

Map.Entry接口如何在不创建对象的情况下调用getValue()/ getKey()方法?