Menu
Coddy logo textTech

Property-Dekoratoren

Teil des Abschnitts Object Oriented Programming der Python-Journey von Coddy — Lektion 14 von 64.

Property-Dekoratoren ermöglichen es Ihnen zu steuern, wie auf Attribute zugegriffen wird und wie diese geändert werden, während die einfache Attributsyntax beibehalten wird.

Hier ist ein Beispiel für eine Klasse mit einem Property-Getter:

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age

Verwenden Sie die Eigenschaft wie ein reguläres Attribut:

person = Person("Alice", 30)
print(person.age)

Ausgabe:

30

Beachten Sie, dass Sie auf age ohne Klammern zugreifen, obwohl eigentlich eine Methode aufgerufen wird.

Fügen Sie einen Setter hinzu, um Daten beim Setzen von Werten zu validieren:

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age
    
    @age.setter
    def age(self, value):
        if value < 0:
            raise ValueError("Age cannot be negative")
        self._age = value

Jetzt können Sie das Alter mit automatischer Validierung festlegen:

person = Person("Alice", 30)
person.age = 31     # Verwendet den Setter mit Validierung
print(person.age)   # Verwendet den Getter

# Dies würde einen Fehler auslösen:
# person.age = -5   # ValueError: Das Alter kann nicht negativ sein

Ausgabe:

31

Erstellen Sie berechnete Eigenschaften, die Werte berechnen:

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height
    
    @property
    def area(self):
        return self.width * self.height

rect = Rectangle(5, 3)
print(rect.area)  # Berechnet 5 * 3 = 15

Ausgabe:

15

Wichtiger Punkt: Property-Dekoratoren lassen Methoden wie Attribute aussehen. Verwenden Sie @property für Getter und @attribute_name.setter für Setter. Dies ermöglicht Datenvalidierung und berechnete Werte, während die einfache Syntax für den Attributzugriff beibehalten wird.

challenge icon

Aufgabe

Mittel

Vervollständigen Sie die Temperature-Klasse in temperature.py, die zwischen Celsius und Fahrenheit umrechnet. Verwenden Sie diese Klasse anschließend in driver.py, um die Temperaturumrechnungen zu testen. Folgen Sie den TODO-Kommentaren in beiden Dateien für schrittweise Anleitungen.

Spickzettel

Property-Dekoratoren ermöglichen es Ihnen zu steuern, wie auf Attribute zugegriffen wird und wie diese geändert werden, während die einfache Attributsyntax beibehalten wird.

Verwenden Sie @property für Getter-Methoden:

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age

person = Person("Alice", 30)
print(person.age)  # Zugriff wie auf ein Attribut, keine Klammern

Verwenden Sie @attribute_name.setter für Setter-Methoden mit Validierung:

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age
    
    @age.setter
    def age(self, value):
        if value < 0:
            raise ValueError("Age cannot be negative")
        self._age = value

person = Person("Alice", 30)
person.age = 31  # Verwendet Setter mit Validierung

Erstellen Sie berechnete Eigenschaften, die Werte kalkulieren:

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height
    
    @property
    def area(self):
        return self.width * self.height

rect = Rectangle(5, 3)
print(rect.area)  # Berechnet 5 * 3 = 15

Probier es selbst

# TODO: Importiere die Klasse Temperature aus dem Modul temperature

# Teste die Klasse:
# TODO: Erstelle eine Temperatur-Instanz bei 25°C
temp = None  # Durch tatsächliche Temperature-Instanz ersetzen

# TODO: Gib sowohl Celsius- als auch Fahrenheit-Werte aus
# TODO: Verwende das Format: "25.0°C ist 77.0°F"

# TODO: Setze die Temperatur auf 98.6°F

# TODO: Gib beide Werte erneut aus, um zu bestätigen, dass die Umrechnung funktioniert
# TODO: Verwende dasselbe Format wie zuvor
quiz iconTeste dich selbst

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