Property-Dekorator
Teil des Abschnitts Object Oriented Programming der Python-Journey von Coddy — Lektion 10 von 64.
Der @property-Decorator ermöglicht es Ihnen, auf Methoden wie auf Attribute zuzugreifen, was eine saubere Möglichkeit bietet, Werte abzurufen und zu setzen.
Hier ist ein Beispiel für eine Klasse, die @property verwendet:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@property
def area(self):
return 3.14159 * self._radius ** 2Erstellen Sie einen Kreis und greifen Sie auf Eigenschaften zu:
my_circle = Circle(5)Greifen Sie auf Eigenschaften wie auf reguläre Attribute zu:
print(my_circle.radius)
print(my_circle.area)Ausgabe:
5
78.53975Beachten Sie, dass Sie beim Zugriff auf Eigenschaften keine Klammern () verwenden – sie sehen wie Attribute aus, führen aber Methodencode aus.
Fügen Sie einen Setter hinzu, um das Ändern von Werten zu ermöglichen:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@radius.setter
def radius(self, value):
if value > 0:
self._radius = value
else:
print("Radius must be positive!")Jetzt können Sie den Radius wie ein Attribut setzen:
my_circle = Circle(5)
my_circle.radius = 10 # Verwendet den Setter
print(my_circle.radius) # Verwendet den GetterAusgabe:
10Wichtiger Punkt: @property lässt Methoden wie Attribute aussehen, während @property_name.setter es Ihnen ermöglicht zu steuern, wie Werte zugewiesen werden.
Spickzettel
Der @property-Decorator ermöglicht es Ihnen, auf Methoden wie auf Attribute zuzugreifen, was eine saubere Möglichkeit bietet, Werte abzurufen und zu setzen.
Grundlegende Verwendung von Properties:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@property
def area(self):
return 3.14159 * self._radius ** 2Zugriff auf Properties ohne Klammern:
my_circle = Circle(5)
print(my_circle.radius) # 5
print(my_circle.area) # 78.53975Hinzufügen eines Setters zur Steuerung der Wertzuweisung:
@radius.setter
def radius(self, value):
if value > 0:
self._radius = value
else:
print("Radius must be positive!")Werte wie Attribute setzen:
my_circle.radius = 10 # Verwendet den Setter
print(my_circle.radius) # Verwendet den GetterProbier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Object Oriented Programming
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDer self-ParameterMethodenAttributeKonstruktor-Methode (__init__)Zusammenfassung – Einfacher Taschenrechner4Vererbung
Grundlagen der VererbungDie super()-FunktionMethoden überschreibenMehrfachvererbungMethod Resolution OrderZusammenfassung - Mitarbeiter-Hierarchie7Spezielle Methoden
Einführung in Magic MethodsOperator-ÜberladungMagic Methods für ContainerRückblick - Eigene Liste10Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterObserver-MusterStrategy-Muster13Abschlussherausforderungen
E-Learning-PlattformBanksystemSpielcharakter-EntwicklungFahrzeugvermietung2Dekoratoren
Einführung in DekoratorenProperty-DekoratorStatischer Methoden-DekoratorKlassenmethoden-Dekorator5Polymorphismus
Methoden-Überschreiben vertieftDuck TypingAbstrakte Klassen und MethodenInterface-DesignZusammenfassung – Formen-Rechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungMixinsStatische und KlassenmethodenKlassendekoratorenContext Manager3Klasseneigenschaften
Instanz- vs. KlassenvariablenProperty-DekoratorenPrivate AttributeZusammenfassung – Bankkonto-Manager6Kapselung
Public, Protected, Private MemberZugriffsmodifikatorenInformation HidingProperty-Decorators für FortgeschritteneZusammenfassung - Studentenverwaltungssystem12Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen