Menu
CoddyTech

Property-Decorators

Teil des Abschnitts Objektorientierte Programmierung der Python-Journey von Coddy. Lektion 14 von 64.

Eigenschaftsdekoratoren ermöglichen es dir, zu steuern, wie auf Attribute zugegriffen wird und wie sie geändert werden, wobei die einfache Attributsyntax erhalten bleibt.

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

Verwende die Eigenschaft wie ein gewöhnliches Attribut:

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

Ausgabe:

30

Beachte, dass du auf age ohne Klammern zugreifst, obwohl tatsächlich eine Methode aufgerufen wird.

Füge 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 kannst du 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 darf nicht negativ sein

Ausgabe:

31

Erstelle 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-Decoratoren lassen Methoden wie Attribute aussehen. Verwende @property für Getter und @attribute_name.setter für Setter. So sind Datenvalidierung und berechnete Werte möglich, während die einfache Attributzugriffssyntax erhalten bleibt.

challenge icon

Aufgabe

Mittel

Vervollständige die Klasse Temperature in temperature.py, die zwischen Celsius und Fahrenheit umrechnet. Verwende diese Klasse anschließend in driver.py, um Temperaturumrechnungen zu testen. Folge den TODO-Kommentaren in beiden Dateien für schrittweise Anweisungen.

Gib jede Umrechnung im Format [celsius]°C is [fahrenheit]°F aus, wobei der Celsius-Wert genau so bleibt, wie er angegeben wurde, und der Fahrenheit-Wert dem von Python berechneten Wert entspricht. Runde die Zahlen nicht und formatiere sie nicht. Die zwei vom Treiber ausgegebenen Zeilen sind:

25°C is 77.0°F
37.0°C is 98.6°F

Probier es selbst

# TODO: Importiere die Klasse Temperature aus dem Modul temperature

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

# TODO: Gib sowohl den Celsius- als auch den Fahrenheit-Wert aus
# TODO: Verwende das Format: "25°C is 77.0°F" (gib beide Werte unverändert aus, ohne Rundung oder Formatierung)

# TODO: Setze die Temperatur auf 98.6°F

# TODO: Gib beide Werte erneut aus, um zu prüfen, ob 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 Objektorientierte Programmierung

Übe selbstständig: Online-Python-Compiler