Я хотел бы создать экземпляры класса, содержащего пустой список по умолчанию; вместо того, чтобы позже устанавливать этот список в окончательный полный список, я хотел бы последовательно добавлять в него элементы. Вот пример кода, иллюстрирующий это:
#!/usr/bin/python
class test:
def __init__(self, lst=[], intg=0):
self.lista = lst
self.integer = intg
name_dict = {}
counter = 0
for name in ('Anne', 'Leo', 'Suzy'):
counter += 1
name_dict[name] = test()
name_dict[name].integer += 1
name_dict[name].lista.append(counter)
print name, name_dict[name].integer, name_dict[name].lista
Когда я запустил указанную выше программу, я ожидал получить
Anne 1 [1]
Лев 1 [2]
Suzy 1 [3]
, как я предполагал, lista
всегда инициализируется пустым списком.
Вместо этого я получил следующее:
Anne 1 [1]
Лев 1 [1, 2]
Suzy 1 [1, 2, 3]
Если я заменю self.lista = lst
на self.lista = []
, он будет работать нормально, точно так же, как когда я добавляю строку name_dict [name] .lista = []
в цикл for.
Почему содержимое списков предыдущих объектов сохраняется, но их значения integer
не изменяются т? Я новичок в Python, поэтому было бы здорово, если бы кто-нибудь мог указать мне, где мои мысли / предположения заблудились.
Заранее большое спасибо за ваши ответы.