Das folgende scheint seltsam .. Grundsätzlich scheint das Somedata-Attribut zwischen allen Klassen, die von the_base_class
geerbt hat.Warum wirken sich Attributreferenzen bei der Python-Vererbung so aus?
class the_base_class:
somedata = {}
somedata['was_false_in_base'] = False
class subclassthing(the_base_class):
def __init__(self):
print self.somedata
first = subclassthing()
{'was_false_in_base': False}
first.somedata['was_false_in_base'] = True
second = subclassthing()
{'was_false_in_base': True}
>>> del first
>>> del second
>>> third = subclassthing()
{'was_false_in_base': True}
definieren self.somedata
in der __init__
Funktion ist offensichtlich der richtige Weg, dies zu umgehen (so jede Klasse hat eine eigene ist somedata
dict) - aber wann ist ein solches Verhalten wünschenswert?
Wie deklariert man dann eine Instanz var? – OscarRyz
Ich habe ein Beispiel in meiner Antwort hinzugefügt. –
Gibt es einen Unterschied zwischen einfachen Daten und komplexen? wie sagt TimB? – OscarRyz