Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 获取要实例化的类类型的字典_Python 3.x_Loops_Class - Fatal编程技术网

Python 3.x 获取要实例化的类类型的字典

Python 3.x 获取要实例化的类类型的字典,python-3.x,loops,class,Python 3.x,Loops,Class,我想迭代python中的字典。这些值是类型 class_dict = {'ClassA': ClassA, 'ClassB': ClassB} 在迭代中,我想做如下事情: for key, value in class_dict.items(): instance = value(params) instance.do_method(params) 本质上,每次迭代都会创建在值中定义的类的实例,并运行它的类方法等 我很好奇为什么这真的有效,以及使用它时价值会发生什么变化。它是

我想迭代python中的字典。这些值是类型

class_dict = {'ClassA': ClassA, 'ClassB': ClassB}
在迭代中,我想做如下事情:

for key, value in class_dict.items():
    instance = value(params)
    instance.do_method(params)
本质上,每次迭代都会创建在值中定义的类的实例,并运行它的类方法等


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

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

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