我想自动创建实例对象,如下所述:
Class MyClass:
def __init__(self,x):
self.x = x
list = ["A","B"]
我想自动创建以下内容,意味着遍历列表并为每个元素创建相同的对象:
A = MyClass(text)
B = MyClass(text)
e.g。如下所示不起作用:
# this doesn't work but explains more what I need
for i in list:
i = MyClass(text)
感谢您的帮助!
答案 0 :(得分:5)
一般来说,你不能也不应该像这样把东西塞进你的命名空间。最好将这些实例存储在dict
或list
Class MyClass:
def __init__(self,x):
self.x = x
lst = ["A","B"] # don't use list as an identifier
myclasses = {k: MyClass(text) for k in lst}
现在你的实例是
myclasses['A']
,myclasses['B']
等。
如果你真的想在命名空间中创建一些变量:
A, B = (MyClass(text) for x in range(2))
请注意,这意味着您需要明确。您无法从文件或用户输入中获取A,B等。
不要试图用exec
来解决这个问题。这可能是解决问题的错误方法。告诉我们为什么你认为你需要这样做。