Objektorientierte Programmierung in Python
Alex Yarosh
Content Quality Analyst @ DataCamp
class Mitarbeiter: def setze_name(self, name): self.name = name def setze_gehalt(self, gehalt): self.gehalt = gehalt def gebe_erhöhung(self, betrag): self.gehalt = self.gehalt + betragdef __init__(self, name, gehalt): self.name, self.gehalt = name, gehalt
mitarbeiter = Mitarbeiter("Miriam Azari", 35000)
# Punktnotation und = verwenden, um Attribute zu ändern
mitarbeiter.gehalt = mitarbeiter.gehalt + 5000
class Mitarbeiter: def setze_name(self, name): self.name = name def setze_gehalt(self, gehalt): self.gehalt = gehalt def gebe_erhöhung(self, betrag): self.gehalt = self.gehalt + betragdef __init__(self, name, gehalt): self.name, self.gehalt = name, gehalt
mitarbeiter = Mitarbeiter("Miriam Azari", 35000)
# Punktnotation und = verwenden, um Attribute zu ändern
mitarbeiter.gehalt = mitarbeiter.gehalt + 5000
setze_gehalt() verhindert nicht mitarbeiter.gehalt = -100import pandas as pd
df = pd.DataFrame({"colA": [1,2], "colB":[3,4]})
df
colA colB
0 1 3
1 2 4
df.columns = ["neue_colA", "neue_colB"]
df
neue_colA neue_colB
0 1 3
1 2 4
# wird einen Fehler verursachen
df.columns = ["neue_colA", "neue_colB", "extra"]
df
ValueError: Längenunterschied:
Erwartete Achse hat 2 Elemente,
neue Werte haben 3 Elemente
df.shape = (43, 27)
df
AttributeError: Attribut kann nicht gesetzt werden
class Arbeitgeber: def __init__(self, name, neues_gehalt): self._gehalt = neues_gehalt@property def gehalt(self): return self._gehalt@gehalt.setter def gehalt(self, neues_gehalt):if neues_gehalt < 0: raise ValueError("Ungültiges Gehalt") self._gehalt = neues_gehalt
← Verwende "geschütztes" Attribut mit führendem _ zur Datenspeicherung
← Verwende @property auf einer Methode, deren Name genau dem des eingeschränkten Attributs entspricht; gibt das interne Attribut zurück
← Verwende @attr.setter auf einer Methode attr(), die bei obj.attr = wert aufgerufen wird
class Arbeitgeber: def __init__(self, name, neues_gehalt): self._gehalt = neues_gehalt@property def gehalt(self): return self._gehalt@gehalt.setter def gehalt(self, neues_gehalt): if neues_gehalt < 0: raise ValueError("Ungültiges Gehalt") self._gehalt = neues_gehalt
mitarbeiter = Mitarbeiter("Miriam Azari", 35000)
# Zugriff auf die "Eigenschaft"
mitarbeiter.gehalt
35000
mitarbeiter.gehalt = 60000 # <-- @gehalt.setter
mitarbeiter.gehalt = -1000
ValueError: Ungültiges Gehalt
$$\text{\Large{Benutzer: wie Attribute}}$$
$$\text{\Large{Entwickler: Zugriffskontrolle}}$$
→ Kein @attr.setter hinzufügen
Erstelle eine schreibgeschützte Eigenschaft
→ Füge @attr.getter hinzu
Für die Methode, die aufgerufen wird, wenn der Wert der Eigenschaft abgerufen wird
→ Füge @attr.deleter hinzu
Für die Methode, die aufgerufen wird, wenn die Eigenschaft mit del gelöscht wird
Objektorientierte Programmierung in Python