Python 如何动态创建对象名称
我有一个叫“karte”的类。我想知道有没有办法动态地给我的新对象命名。正常创建对象的方式是这样的:
karta=karte()
但我想尝试类似这样的方式:
karta[i]=karte()
或者其他类似的方式,其中的 i 是一个循环的数字。最后我想像这样调用对象:
karta1.boja
karta2.boja
karta3.boja
我该怎么做呢?我刚学Python,谢谢。
2 个回答
6
除非你真的需要把这些对象放在一个列表之外,并且给它们起像 karta1、karta2 这样的名字,否则我建议你按照你说的做,用一个列表和循环来初始化它们:
for i in some_range:
karta[i]=karte()
14
你可以这样创建一个对象的列表:
karta = []
for i in range(10):
karta.append(karte())
或者你也可以用列表推导式来创建:
karta = [karte() for i in range(10)]
现在你可以像这样访问这些对象:karta[i]
。
要实现你最后的例子,你需要修改globals()
这个字典。我并不推荐这样做,但这是实现的方法:
g = globals()
for i in range(10):
g["karte" + str(i)] = karte()
不过,这样做并不是很符合Python的风格,最好还是直接使用列表。