Wie von anderen erwähnt, ist es in einem Fall ein Attribut für die Klasse und ein Attribut für die Instanz. Ist das wichtig? Ja, in einem Fall. Wie Alex sagte, wenn der Wert veränderbar ist. Die beste Erklärung ist Code, also füge ich etwas Code hinzu, um es zu zeigen (das ist alles, was diese Antwort wirklich tut):
Zuerst eine Klasse, die zwei Instanzattribute definiert.
>>> class A(object):
... def __init__(self):
... self.number = 45
... self.letters = ['a', 'b', 'c']
...
Und dann eine Klasse, die zwei Klassenattribute definiert.Jetzt
>>> class B(object):
... number = 45
... letters = ['a', 'b', 'c']
...
wir sie verwenden:
>>> a1 = A()
>>> a2 = A()
>>> a2.number = 15
>>> a2.letters.append('z')
Und alles ist gut:
>>> a1.number
45
>>> a1.letters
['a', 'b', 'c']
nun die Klassenattribut Variation verwenden:
>>> b1 = B()
>>> b2 = B()
>>> b2.number = 15
>>> b2.letters.append('z')
und alles ist .. .well ...
>>> b1.number
45
>>> b1.letters
['a', 'b', 'c', 'z']
Ja, beachten Sie, dass das veränderbare Klassenattribut bei der Änderung für alle Klassen geändert wurde. Das ist normalerweise nicht das, was du willst.
Wenn Sie das ZODB verwenden, verwenden Sie viele Klassenattribute, da es eine praktische Möglichkeit ist, vorhandene Objekte mit neuen Attributen zu aktualisieren oder Informationen auf Klassenebene hinzuzufügen, die nicht persistent sind. Ansonsten können Sie sie ziemlich ignorieren.
Duplizieren http://stackoverflow.com/questions/1537202/variables-inside-and-outside-of-a-class-init-function –
Gleiche Frage innerhalb weniger Tage? Hausaufgaben? –
Bitte werfen Sie einen Blick auf die anderen Fragen, die ich geschrieben habe, zum Beispiel: http://stackoverflow.com/questions/1547222/prevent-decorator-from-being-use-twice-on-the-same-function-in -python oder das: http: // stackoverflow.com/questions/1353173/ist-es-möglich-zu-a-flash-video-on-a-fogbugz-wiki-page (ich bezweifle, wie viele Schulen haben einen fogbugz account :)) auch, wenn es Jeder Ort, an dem du die IP des Nutzers sehen kannst - ich bin mir ziemlich sicher, dass der andere nicht aus dem gleichen Land wie ich ist. – olamundo