Python 如何动态创建对象名称

2 投票
2 回答
21579 浏览
提问于 2025-04-17 02:08

我有一个叫“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的风格,最好还是直接使用列表。

撰写回答