[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