Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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 如何从实例的字符串名称创建类的实例?_Python_Oop - Fatal编程技术网

Python 如何从实例的字符串名称创建类的实例?

Python 如何从实例的字符串名称创建类的实例?,python,oop,Python,Oop,我想创建一个类的多个实例,我尝试创建一个for循环来对它们进行不同的命名。 类似这样的情况,因为实例名称不应该是字符串,所以不起作用: class A: pass for i in range(10): "a"+str(i) = A() 这里我期望的结果是10个名为a0,a1,…,的类的实例,a9 我该怎么办?你可以使用字典 classes = {} for i in range(10): classes[f"a{i}"] = A() 然后您可以像这样访问类实例c

我想创建一个类的多个实例,我尝试创建一个for循环来对它们进行不同的命名。 类似这样的情况,因为实例名称不应该是字符串,所以不起作用:

class A:
    pass

for i in range(10):
    "a"+str(i) = A()
这里我期望的结果是10个名为a0,a1,…,的类的实例,a9


我该怎么办?

你可以使用字典

classes = {}
for i in range(10):
    classes[f"a{i}"]  = A()
然后您可以像这样访问类实例
classes[“a7”]

我可以从两个方面考虑。 垃圾道和好方法

鞭打:

class A:
    pass

for i in range(10):
    eval("a"+str(i)) = A()
好:


@Carcigenicate是的,永远不要为此感谢。谢谢我试了第一个,eval()不起作用。对于第二个好主意,我用a.append()替换了[I],它成功了。谢谢,我只是为了测试的目的而工作,我在这里运行,它工作了。但是append是一个更好的主意,它的工作原理类似于[i]好的,我对eval()不太了解,但是对于列表,我得到了一个索引超出范围的错误,这就是为什么我将它改为appendits,因为你必须从0开始,当你使用范围时,你从1开始,不是因为创建列表时没有可用的“槽”吗?我的意思是它的长度等于0。我喜欢这个想法,我不知道这样做是可能的。非常感谢。
class A:
    pass

a= []
for i in range(10):
    a[i] = A()