Erstellen Sie Getter und Setter in Python

Olorunfemi Akinlua 8 Oktober 2023
  1. Getter und Setter in Python
  2. Verwenden Sie eine Funktion, um Getter und Setter in Python zu erstellen
  3. Verwenden Sie die Funktion property(), um Getter und Setter in Python zu erstellen
  4. Verwenden Sie den Decorator @property, um Getter und Setter in Python zu erstellen
Erstellen Sie Getter und Setter in Python

Die objektorientierte Programmierung (OOP), ein Programmierparadigma, macht viele Dinge einfach, von der Zusammensetzbarkeit bis zur Vererbung, und ermöglicht es uns, Funktionen und Programmteile schneller zu erstellen. Dieses Paradigma hat verschiedene Merkmale; zwei sind Getter und Setter.

Klassen, die Grundlage von OOP, verfügen häufig über Variablen, die für jede Instanz eindeutig sind, und diese Variablen (oft als Eigenschaften bezeichnet) werden über Methoden festgelegt oder abgerufen. Diese Methoden werden Getter und Setter genannt.

Diese Verhaltensweisen sind in Programmiersprachen beliebt, die OOP unterstützen, und Python unterstützt es auch. In diesem Artikel wird erläutert, wie Sie in Python einen getter und einen setter erstellen.

Getter und Setter in Python

Getter und Setter sind Methoden, die uns helfen, Klassenvariablen oder Eigenschaften ohne direkten Zugriff festzulegen, wodurch der Zweck der Abstraktion und Kapselung zunichte gemacht wird. Mit Gettern und Settern haben wir also die Möglichkeit, mit Klasseneigenschaften zu arbeiten.

Bevor wir Getter und Setter erstellen, ist es wichtig zu wissen, dass Python im Gegensatz zu anderen Programmiersprachen keine versteckten Felder hat, sodass Sie direkt über die Punktnotation auf die Variablen innerhalb einer Klasse zugreifen können.

Wir können Getter und Setter mit normalen Funktionen, der property()-Funktion und @property-Dekoratoren erreichen.

Verwenden Sie eine Funktion, um Getter und Setter in Python zu erstellen

Typische Klassenfunktionen, sogenannte Methoden, sind nützlich, um Getter und Setter zu erstellen, und wir können sie einfach mit dem self-Konzept einrichten.

Die Methode gibt die Eigenschaft für den getter zurück, und für die setter bindet die Methode das Argument an die Eigenschaft. Zur Veranschaulichung verwenden wir einen Employee, der eine position-Eigenschaft enthält, die getter-Methode namens getPosition und die setter-Methode namens setPosition.

class Employee:
    def __init__(self) -> None:
        self.position = None

    def getPosition(self):
        return self.position

    def setPosition(self, position):
        self.position = position


Jacob = Employee()
Jinku = Employee()

Jacob.setPosition("Engineer II")
Jinku.setPosition("Senior Engineer")

print(Jacob.position)
print(Jinku.getPosition())

Ausgang:

Engineer II
Senior Engineer

Dieses Setup oder dieser Ansatz weist jedoch kein besonderes Verhalten auf.

Verwenden Sie die Funktion property(), um Getter und Setter in Python zu erstellen

Um ein spezielles Verhalten zu erzielen, können wir die Funktion property() verwenden, die ein Eigenschaftsobjekt erstellt und zurückgibt, das drei Methoden enthält, getter(), setter() und delete().

Es hilft, eine Schnittstelle zu Instanzattributen bereitzustellen. Diese Funktionalität ermöglicht es uns, alle getter- und setter-Fähigkeiten einfach zu erstellen.

Um die Funktion property() zu verwenden, müssen wir vier Argumentwerte festlegen, die Funktionen sind, die property() zu einer Funktion höherer Ordnung machen.

Die Methoden getter, setter und delete sind seine Argumente (die alle optional sind) und es gibt das Eigenschaftsobjekt zurück.

property(fget, fset, fdel, doc)

Lassen Sie uns die Funktion property() in unserem OOP-Code verwenden.

class Employee:
    def __init__(self):
        self.position = None

    def getPosition(self):
        return self.position

    def setPosition(self, position):
        self.position = position

    pos = property(getPosition, setPosition)


Jacob = Employee()
Jinku = Employee()

Jacob.position = "Engineer II"
Jinku.position = "Senior Engineer"

print(Jacob.position)
print(Jinku.position)

Ausgang:

Engineer II
Senior Engineer

Mit der Einführung der Funktion property() haben wir die Bindung pos, die das Eigenschaftsobjekt enthält, das hilft, den Zugriff auf private Eigenschaften sicher zu halten.

Verwenden Sie den Decorator @property, um Getter und Setter in Python zu erstellen

Wir können die Funktion property() mit dem Decorator @property implementieren, und damit müssen die Namen get und set in unserer Methode nicht verwendet werden.

Mit dem Decorator @property können wir den Namen position wiederverwenden, der die Funktionen getter und setter definiert.

Mit @property erzeugen wir den getter und mit @position.setter erzeugen wir den setter, und das wird durch die dem Code hinzugefügte und in der Ausgabe sichtbare print-Anweisung offensichtlich.

class Employee:
    def __init__(self):
        self.position = None

    @property
    def position(self):
        print("Get Employee Position: ")
        return self._position

    @position.setter
    def position(self, value):
        print("Set Position")
        self._position = value


Jacob = Employee()
Jinku = Employee()

Jacob.position = "Engineer II"
Jinku.position = "Senior Engineer"

print(Jacob.position)
print(Jinku.position)

Ausgang:

Set Position
Set Position
Set Position
Set Position
Get Employee Position:
Engineer II
Get Employee Position:
Senior Engineer

Es gibt vier Set Position wegen der __init__-Methode, die die anfängliche position-Eigenschaft setzt, wenn die Klasseninstanz aufgerufen wird, was zu den ersten beiden führt. Wenn wir den Wert für die nächsten beiden auf die entsprechenden Werte setzen, wird er erneut gedruckt.

Für den getter gibt es die Anweisung Get Employee Position aus, wenn er den Eigenschaftswert erhält, und der getter wird nur zweimal aufgerufen. Daher die beiden Aussagen.

Wir können unserem OOP-Code eine Validierung hinzufügen, wenn wir die setter-Methode verwenden.

class Employee:
    def __init__(self):
        self.position = None

    @property
    def position(self):
        print("Get Employee Position: ")
        return self._position

    @position.setter
    def position(self, value):
        print("Set Position")
        if value != None and len(value) <= 2:
            raise ValueError("Position name is less than two and is deemed invalid")
        self._position = value


Jacob = Employee()
Jinku = Employee()

Jacob.position = "OS"
Jinku.position = "Senior Engineer"

print(Jacob.position)
print(Jinku.position)

Ausgang:

Set Position
Set Position
Set Position
Traceback (most recent call last):
  File "c:\Users\akinl\Documents\Python\getterSetter.py", line 20, in <module>
    Jacob.position = "OS"
  File "c:\Users\akinl\Documents\Python\getterSetter.py", line 14, in position
    raise ValueError("Position name is less than two and is deemed invalid")
ValueError: Position name is less than two and is deemed invalid
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

Verwandter Artikel - Python Property