Список в классе почему-то является общим для всех объектов
Имеется небольшой класс с полем-списком:
class Country:
citizens = []
Конструктор класса наполняет список 4 объектами другого класса:
def __init__(self):
for i in range(4):
self.citizens.append(Citizen())
Создается два объекта класса Country, однако каждый объект имеет в своем списке не 4 жителя, а 8, то есть жителей своей страны и в дополнении второй, что не предусматривалось. Я пришел к выводу что этот список по какой то причине является общим для всех объектов в классе. Почему так происходит, и какая альтернатива спискам в данной ситуации?
Ответы (1 шт):
Автор решения: George
→ Ссылка
citizens Создайте на уровне экземпляра класса
def __init__(self):
self.citizens = []
for i in range(4):
self.citizens.append(Citizen())
Списки в Python - изменяемые коллекции + Вы обьявили citizens переменной класса (общая для всех экземпляров)