Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中创建一个类列表,其中包含一个类列表_Python_Class - Fatal编程技术网

在python中创建一个类列表,其中包含一个类列表

在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):

我试图创建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):
        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目前并不太担心代码高尔夫。