Impressum
< Index

Klassen in Python

Eine Klasse in Python beginnt mit dem Schlüsselwort class gefolgt von dem Klassennamen und einem Doppelpunkt.
Eingerückt definiert man die Methoden, welche mit def beginnen.

Attribut in Python-Klassen

Attribute werden in Python im Konstruktor festgelegt.
Der Konstruktor ist in Python die Methode def __init__(self):.
Hier ist self eine Referenz auf das aktuelle Objekt (wird beim Aufruf nicht explizit angegeben).
Mittels self.Attribute_Name = Wert kann man den Attributen Werte zuweisen und somit das Attribut anlegen.
Zugriffsrechte werden in Python nicht durch Schlüsselworte, sondern durch vorangestellte Unterstriche ( _ ) realisiert.
Klasse in Python
class Klasse:
    def __init__(self):
        self.öffentlich = 0 # public Attribut
        self._geschützt = 0 # protected Attribut
        self.__geheim   = 0 # private Attribut        
    

Methoden in Python-Klassen

Methoden in Python beginnen mit def gefolgt vom Methodennamen. Nach dem Methodennamen kommen Klammern zwischen denen die Parameter stehen.
Bei jeder Objektmethode ist der erste Parameter self, der als Referenz auf das aktuelle Objekt fungiert.
Die Zugriffsrechte werden genau wie bei Attributen mit Unterstrichen realisiert.
Eine Methode kann einen Wert mit return zurückliefert.
Klasse in Python
class Kreis:
    def __init__(self, r):
        self.__r = r
    
    def getRadius(self):    # public Getter
        return self.__r
    
    def setRadius(self, r): # public Setter
        self.__r = r
    
    def umfang(self):       # public Methode
        return 2*3.1415*self.__r;
    

Objekte erzeugen

Die Klasse Kreis besitzt den Konstruktor __init__(self, r), dieser erfordert beim Aufruf einen Parameter r.
Um ein Kreis-Objekt zu erzeugen weist man der Objektvariable ein neues Kreisobjekt zu.
Objekte in Python
class Kreis:
    ...
k1 = Kreis(2)       # Kreis-Objekt k1
k2 = Kreis(4)       # Kreis-Objekt k2
print(k1.umfang())  # gibt 12.566 aus
print(k2.umfang())  # gibt 25.132 aus
    
Jedes Objekt kann jede public Methode aufrufen und jedes public Attribute verwenden.
Objektmethoden verwenden
k1 = Kreis(2)
k1.setRadius(10)
u= k1.umfang()
r= k1.getRadius()

Die __str(self)__ Methode

Gibt man ein Objekt mit print(k1) aus, so erhält man eine Ausgabe die ungefähr so aussieht: <__main__.Kreis object at 0x01E922B0>
Dies bedeutet, dass k1 ein Objekt der Klasse Kreis ist.
Will man eine eigene (und schönere) Ausgabe haben muss man diese in der Methode __str__(self) festlegen.
Eine toString-Methode
class Kreis:
    ...
    def __str__(self):
        return "Kreis mit radius="+str(self.__r)
        
k1 = Kreis(2)       # Kreis-Objekt k1
k2 = Kreis(4)       # Kreis-Objekt k2
print(k1)  # Ausgabe: Kreis mit radius=2
print(k2)  # Ausgabe: Kreis mit radius=4