HSG |
|
Der Konstruktor wird bei der Erzeugung aufgerufen, der Destruktor bei der Vernichtung. Ein Objekt wird erst vernichtet, wenn die letzte Referenz verschwunden ist.
# -*- coding: iso-8859-1 -*- # Autor: mk, 20.11.08 class Bruch(object): def __init__(self,z,n): self.z = z self.n = n def kuerze(self): a=self.z b=self.n while b != 0: a,b = b,a%b self.z = self.z/a self.n = self.n/a
Man darf eine Klasse nicht mit einem Objekt der Klasse verwechseln. Eine Klasse ist - zumindest in Teilen - so etwas wie ein Bauplan für Objekte. Die Anweisung
a = Bruch(4,7)
'erschafft' ein neues Bruchobjekt a und belegt die Attribute a.z mit 4 und a.n mit 7.
Konnte man bei der Konstruktion der Klasse bereits wissen, wie später die Objekte der Klasse heißen? Natürlich nicht, daher wählt man sich einen Namen für das aktuelle Objekt. Diesen Namen teilt man den Methoden der Klasse als erstes Argument mit. Gewöhnlich wird der Name self verwendet. Ein Zugriff auf die Attribute des Objekts erfolgt in der Klasse stets durch ein vorangestelltes self.. Beim späteren Aufruf einer Methode, z.B. bei
a.kuerze()
wäre es einigermaßen unnötig, den Namen des Objekts zusätzlich einzusetzen, etwa a.kuerze(a). Ein solcher Aufruf wäre nicht nur unnötig, er ist auch durch die Python-Syntax verboten. Das System ersetzt natürlich hier self durch a.