In Python sind Deskriptoren ein leistungsstarker Mechanismus, der das Abfangen von Objekten ermöglicht Attributzugriff und -änderung. Um ihre Funktionalität zu verstehen, schauen wir uns den bereitgestellten Code genauer an:
class Celsius(object): def __init__(self, value=0.0): self.value = value def __get__(self, instance, owner): return self.value def __set__(self, instance, value): self.value = float(value) class Temperature(object): celsius = Celsius()
F1: Warum brauche ich eine Deskriptorklasse?
A1: Eine Deskriptorklasse kapselt die Logik hinter dem Abfangen von Attributzugriffen und -änderungen. Durch die Trennung dieser Logik von der Klasse, die sie verwendet, können Sie sie wiederverwenden und eine konsistente Schnittstelle für den Zugriff auf und die Änderung von Attributen bereitstellen.
F2: Was sind Instanz und Besitzer in __get__?
A2:
F3: Wie würde ich das nennen/verwenden? Beispiel?
A3: Sie können wie folgt auf das Celsius-Attribut zugreifen und es ändern:
temp = Temperature() temp.celsius # calls `celsius.__get__` and returns the current Celsius value temp.celsius = 25.0 # calls `celsius.__set__` to update the Celsius value
Hinweis: Wenn Sie versuchen, direkt auf Temperature.celsius zuzugreifen, lautet die Instanz None.
Das obige ist der detaillierte Inhalt vonWie funktionieren die Methoden „__get__' und „__set__' von Python-Deskriptoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!