Erstellen Sie Getter und Setter in Python
- Getter und Setter in Python
- Verwenden Sie eine Funktion, um Getter und Setter in Python zu erstellen
-
Verwenden Sie die Funktion
property()
, um Getter und Setter in Python zu erstellen -
Verwenden Sie den Decorator
@property
, um Getter und Setter in Python zu erstellen
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 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