ich bin neu hier und noch Anfänger mit Python.
Ich versuche zu verstehen, was bei der Instanziierung folgender Klasse
passiert. Das Decorator-Prinzip habe ich in etwa verstanden, aber ich
habe mit Google etc. nichts gefunden, was mir folgendes Verhalten
irgendwie erklärt ...
Klassendefinition (Code aus dem Netz - vereinfacht):
Code: Alles auswählen
class Celsius:
def __init__(self, grad=0):
self.temperature = grad
@property
def temperature(self):
print("Getting value")
return self._Temperatur
@temperature.setter
def temperature(self, value):
print("Setter aufgerufen")
if value < -273:
raise ValueError("Temperatur unter -273.15 nicht möglich")
self._Temperatur = value
# Wenn ich jetzt die Klasse auf unterschiedlichem Weg instanziiere,
# erhalte ich unterschiedliche Ergebnisse:
# Instanz T1: korrekt, wie gewünscht
T1 = Celsius(-300) # Exception wegen des unerlaubten Wertes, wie erwartet
# Instanz T2: nicht korrekt - unerwartet
T2 = Celsius() # mit Klammern, aber ohne Argument
T2 = -300 # Setter wird aufgerufen, aber keine Exception
print(T2) # Ausgabe: -300
# Instanz T3: nicht korrekt - ebenfalls unerwartet
T3 = Celsius # ohne Klammern - nackt!
T3 = -300 # Setter wird nicht aufgerufen, also keine Exception
print(T3) # Ausgabe: -300
Ich habe in meinen Büchern und im Netz trotz intensiver Suche keine
befriedigende Antwort gefunden.
Wäre jemand so freundlich und würde mir das erklären oder einen Link geben,
damit ich das irgendwie nachvollziehen kann?
Danke und Grüße
Udo