Przekaż listę do klasy python [duplikat]
To pytanie ma już tutaj odpowiedź:
„Least Astonishment” i argument Mutable Default Argument 32 odpowiedziMam tę prostą klasę:
class revs:
def __init__(self, rev, us, accs = []):
self.rev = rev
self.us = us
self.accs = accs
I mam ten fragment kodu, aby przypisać wartości do listy i jest wewnątrz pętli
rev, usu = cada_l.split("|")
acct = each_l[:2].strip()
list_acct.append(acct)
i na koniec tworzę dyktę, aby zarządzać listą takich obrotów:
drevs = {}
cada = revs(rev, us, list_acct)
drevs[cada.rev] = cada
I działa poprawnie z rev i nas, ale z list_acct zawsze aktualizuje wszystkie instancje:
drevs['1'].rev
'1'
drevs['2'].rev
'2'
drevs['1'].us
'user1'
drevs['2'].us
'user2'
drevs['1'].accs
'["Doc1","Doc2"]'
drevs['2'].accs
'["Doc1","Doc2"]'
A jeśli zmienię list_acct.clear (), wartości we wszystkich instancjach są jasne, wciąż jestem całkiem nowy w Pythonie i to mnie wprawia w zakłopotanie.
Dzięki