【发布时间】:2014-03-16 11:04:59
【问题描述】:
我对 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
这段代码确实循环播放器实例化 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")
我不知道为什么这不起作用,也不知道我应该怎么做,谢谢。
【问题讨论】:
标签: python class oop python-2.7 instantiation