[Python-de] Definition von Klassen
Lutz Horn
dev-random at arcor.de
Son Apr 9 18:36:35 CEST 2006
Hallo,
Pascal Dreisbach schrieb:
> Im ersten Fall wird x als Klassenattribut beschrieben, im zweiten Fall
> soll es ein Objektattribut sein?
>
> Aber kann nicht beides über
> >>>
> klasse = MyClass()
> print klasse.x
> <<<
> angesprochen werden?
Das stimmt. Was aber nicht in beiden Fällen geht, ist der Zugriff auf x
ohne eine Instanz von MyClass.
>>> MyClass.x # geht nur im ersten Fall
1
Du siehst den Unterschied, wenn Du sowohl Klassen- als auch
Instanz-Attribute gleichzeitig verwendest.
>>> class MyClass:
... x = 1 # Klassen-Attribut
... def __init__(self):
... self.x = 2 # Instanz-Attribut
...
>>> instance = MyClass()
>>> instance.x, MyClass.x # Instanz-Attribut, Klassen-Attribut
(2, 1)
Gruß
Lutz