在python中创建一个类列表,其中包含一个类列表
我试图创建3支不同的球队,每支球队有3名不同的球员。但是现在每个队的队员都是一样的。下面是我的代码。如果有人有一个解决方案,那就太好了在python中创建一个类列表,其中包含一个类列表,python,class,Python,Class,我试图创建3支不同的球队,每支球队有3名不同的球员。但是现在每个队的队员都是一样的。下面是我的代码。如果有人有一个解决方案,那就太好了 class player(): name='' class team(): name='' players=[] teams=[] for i in range (3): teams.append(team()) teams[i].name=str(i) for j in range(3):
class player():
name=''
class team():
name=''
players=[]
teams=[]
for i in range (3):
teams.append(team())
teams[i].name=str(i)
for j in range(3):
teams[i].players.append(player())
teams[i].players[j].name='P'+str(i)+str(j)
不能只在根定义中为类的属性赋值。这将为类的所有实例设置属性。使用构造函数(
\uuuu init\uuuu()
方法)为属性赋值,然后更改它们:
class player():
def __init__(self):
self.name=''
class team():
def __init__(self):
self.name=''
self.players=[]
这样,每个玩家和每个团队都有自己的名称属性,每个团队都有自己的玩家列表
您还可以接受\uuuu init\uuuu()
方法中的参数来直接命名球队和球员:
class player():
def __init__(self,playername=''):
self.name=playername
p = player("Jim")
这将启动一个已将.name
属性设置为“Jim”的玩家。您希望该玩家类的每个实例都有不同的名称,还是所有玩家都有一个名称?我想a会有帮助的。你不把名字
包括在初始值中吗?我个人会的,是的。我以初始化器中的长参数列表而臭名昭著。但我认为这是一个品味的问题。它也值得将玩家
作为团队的一个参数。OP可以将用户代码压缩到一行,如果他们愿意:teams=[team(str(i),[player(f'P{i}{j}代表范围内的j(3)])代表范围内的i(3)]
是可能的。但我认为OP目前并不太担心代码高尔夫。