我在Python中比较新,使用的是2.7。这似乎是应该起作用的,但不是。从列表中实例化一组类
我想用类Player的多个实例创建一个类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倍,但“我”没有得到处理字符串P1,P2和P3所取代。因此,例如,
p1.name
是未定义的。
对于这个问题,所以是
i.name
如果我测试的其他代码与for循环,它的工作原理与预期替换。例如:
for i in self.playerlist:
print i
p1
p2
p3
但
i = Player(i)
不会变成实例
p1 = Player("p1")
我想不通为什么没有这个工作,不知道如何否则我应该这样做,谢谢。
没错。在这种情况下,一个列表也足够了:'p = [Player(i)for i in xrange(n)]'。然后像'p [0]','p [1]'等一样使用它们。 – Sahand
我已经有了列表版本;只需使用'xrange'就不会给出正确的玩家名字。 – jonrsharpe