Если вы замените свой Team()
класс следующим:
class Team():
def __init__(self, name=None):
self.name = name
self.players = []
Ваш результат станет таким:
Team0
Name-0-0
Name-0-1
Name-0-2
Team1
Name-1-0
Name-1-1
Name-1-2
, который, я думаю, является тем, к чему вы стремитесь.См. Эту ссылку: «Наименьшее изумление» и изменяемый аргумент по умолчанию , чтобы понять, почему.
Проблема в том, что при использовании текущего инициализатора Team()
параметр players
не передаетсясо значением по умолчанию []
, как вы ожидаете, вместо этого значение players
сохраняется для каждой созданной команды.
Каждая команда имеет ссылку на один и тот же список, поэтому один и тот же список печатается дважды.
Причина, по которой None
печатается три раза, заключается в том, что каждый раз, когда создается команда,Добавлены еще 3 игрока, но ваш внутренний цикл for
изменяет только имена первых 3 игроков, оставляя последних 3 игроков нетронутыми.