gpt4 book ai didi

python - 从列表中实例化一组类

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:05 25 4
gpt4 key购买 nike

我是 Python 的新手,使用的是 2.7。这看起来应该有效,但实际上没有。

我想用类 Player 的多个实例创建类 Game 的实例。用户实例化 Game,指定玩家数量,例如 game = Game(3)。我想调用 Player 实例 p1、p2 等。

我从一个创建名称列表的方法开始

def getPlayerList(self):
self.playerlist = []
for p in range (self.numplayers):
self.playerlist.append("p" + str(p+1))
return self.playerlist

对于 3 个玩家,这会生成一个包含 3 个字符串的列表:

self.playerlist = [p1, p2, p3]

现在我想创建 3 个 Player 实例,分配给 p1、p2 和 p3。这似乎是最简单的方法:

def initPlayers(self):
self.getPlayerList()
for i in self.playerlist:
i = Player(i) # doesn't work
return

此代码确实循环遍历了 Player 实例化 3 次,但“i”没有被替换为字符串 p1、p2 和 p3。所以,例如

p1.name

未定义。

就此而言,也是如此

i.name

如果我用这个 for 循环测试其他代码,它会与预期的替换一起工作。例如:

for i in self.playerlist:
print i

p1
p2
p3

但是

i = Player(i)

不会变成实例化

p1 = Player("p1")

我不明白为什么这行不通,也不知道我还应该怎么做,谢谢。

最佳答案

我认为你把这个复杂化了。尝试动态生成变量名通常不是一个好主意;改用字典:

players = {i:Player(i) for i in self.playerlist}

或者更简单的列表,您可以在其中按索引访问玩家:

players = [Player(i) for i in self.playerlist]

您在当前循环中所做的就是将一个新的 Player 对象分配给 for 循环变量 i,然后立即将其丢弃当循环迭代时。

关于python - 从列表中实例化一组类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21824214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com