Felder und ihre Initialisierung
Felder
Wir können das Objekt mit einer Methode initialisieren.
Durch Bindung an ein Attribut des Zielobjektes wird das Attribut im Zielobjekte gleichzeitig angelegt, falls es bisher noch nicht existierte.
main.py
class C():
def init( self ):
self.a = 2
def print( self ):
print( self.a );c = C()
c.init()
c.print()Protokoll
2
Die attributerzeugende Bindung kann auch außerhalb der Klasse geschehen (nicht bei jedem Objekt).
main.py
class C():
passc = C()
c.a = 7
print( c.a )Protokoll
7
Der Standardname »__init__«
Die Methode »__init__« wird „auf magische Weise“ (stillschweigend, implizit) beim Anlegen eines neuen Objekts aufgerufen.
main.py
class C():
def __init__( self ):
print( '__init__ was called.' );
self.a = 2
def print( self ):
print( self.a );c = C()
c.print()
Protokoll
__init__ was called.
2
Felder von Klassen und ihrer Exemplaren
main.py
class C():
a = 2
def __init__( self ):
self.b = 12
def print( self ):
print( self.a );c = C()
print( C.a, c.a, c.b ); C.a += 1; c.b += 1
print( C.a, c.a, c.b ); c.a += 1; c.b += 1
print( C.a, c.a, c.b ); d = C()print( C.a, d.a, d.b ); C.a += 2;
print( C.a, c.a, c.b );
print( C.a, d.a, d.b );Protokoll
2 2 12
3 3 13
3 4 14
3 3 12
5 4 14
5 5 12