【问题标题】:Dictionary to get class type to instantiate获取类类型以实例化的字典
【发布时间】:2019-12-11 02:41:52
【问题描述】:

我想在 python 中迭代一个字典。值是类型。

class_dict = {'ClassA': ClassA, 'ClassB': ClassB}

在迭代中我想做这样的事情:

for key, value in class_dict.items():
    instance = value(params)
    instance.do_method(params)

基本上每次迭代都会创建值中定义的类的实例并运行它的类方法等。

我很好奇为什么这确实有效,以及使用它时 value 会发生什么。它是在字典中实例化还是在之后实例化?

【问题讨论】:

    标签: python-3.x loops class


    【解决方案1】:

    Python 类本身就是对象——它们是type(或另一个元类)的实例。因此,您可以在变量或数据结构(例如字典)中引用类。类也是可调用的;通常,“调用”它们会创建一个新的类实例。

    当字典包含对类的引用时,不会创建该类的实例,因为您没有“调用”该类来创建实例。实例在您的循环中创建,其中key 是类名(字符串),value 是类本身;表达式value(params) 创建实例,因为它“调用”类。该实例未存储在字典中,因为您没有编写任何代码将其放在那里。

    【讨论】:

      猜你喜欢
      • 2017-09-18
      • 2017-11-11
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 2021-10-14
      • 2022-06-26
      相关资源
      最近更新 更多