python
class Rechteck:
def __init__(self, breite, hoehe):
self.breite = breite
self.hoehe = hoehe
@property
def flaeche(self): # Zugriff ohne Klammern: r.flaeche
return self.breite * self.hoehe
@classmethod
def quadrat(cls, seite): # alternative Konstruktion: Rechteck.quadrat(3)
return cls(seite, seite)
@staticmethod
def ist_gueltig(wert): # kein self, gehört thematisch zur Klasse
return wert > 0
r = Rechteck.quadrat(3)
print(r.flaeche) # 9
| Dekorator | Erster Parameter | Zweck |
|---|---|---|
| (keiner) | self |
Normale Methode, arbeitet mit dem Objekt |
@property |
self |
Berechneter Wert, der wie ein Attribut gelesen wird |
@classmethod |
cls |
Arbeitet mit der Klasse selbst, z. B. alternative Konstruktoren |
@staticmethod |
keiner | Normale Funktion, die nur thematisch zur Klasse passt |
Privat? Python kennt kein private. Konvention: Ein Unterstrich vorne (_intern) bedeutet "nicht von außen anfassen".