[英]How to instantiate objects from different classes from a list of dictionaries?
[英]How to instantiate a list of classes using for loop?
如何从不同类的列表中实例化对象,每个类在不同的模块中定义? 就像是:
a.py
:
class a():
def __init__():
print('a called')
b.py
:
class b():
def __init__():
print('b called')
main.py
import a
import b
classes = ['a', 'b']
for class in classes:
class = class()
假设您在编写程序时了解所有类(即您没有在运行时动态发现它们),则可以将创建内容放入列表文字中:
from a import a
from b import b
objects = [a(), b()]
如果要从某个地方获取一些类列表,那么就像遍历该列表并调用每个类一样简单。
import a
import b
classes = [a.a, b.b]
objects = [cls() for cls in classes]
这些类是否需要由字符串列表引用? 您可以这样做:
classes = [a.a, b.b]
for cls in classes:
class_instance = cls()
如果用户输入了类名,则需要处理字符串,就像在最初的示例中,在字符串列表中使用类名的定义一样。 在这种情况下,请使用eval(classname)
获取eval(classname)
的构造函数/初始化。
from a import a
from b import b
classnames = ["a", "b"]
instances = [eval(n)() for n in classnames]
PS:您在init -definitions中忘记了self,这会导致出现以下错误: __init__()takes 0 positional arguments but 1 was given
init __init__()takes 0 positional arguments but 1 was given
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.