Crear Getter y Setter en Python
- Getter y Setter en Python
- Use una función para crear Getter y Setter en Python
-
Usa la función
property()
para crear Getter y Setter en Python -
Use el decorador
@property
para crear Getter y Setter en Python
La Programación Orientada a Objetos (POO), un paradigma de programación, hace que muchas cosas sean fáciles, desde la componibilidad hasta la herencia, y nos permite crear características y programar partes más rápido. Este paradigma tiene diferentes características; dos son getters
y setters
.
Las clases, la base de la programación orientada a objetos, a menudo tienen variables que son únicas para cada instancia, y estas variables (a menudo llamadas propiedades) se establecen u obtienen a través de métodos. Estos métodos se denominan getters
y setters
.
Estos comportamientos son populares en los lenguajes de programación que admiten programación orientada a objetos, y Python también lo admite. Este artículo discutirá cómo crear un getter
y un setter
en Python.
Getter y Setter en Python
Getters y Setters son métodos que nos ayudan a establecer variables de clase o propiedades sin acceso directo, anulando el propósito de abstracción y encapsulación. Entonces, con getters
y setters
, tenemos la capacidad de trabajar con propiedades de clase.
Antes de crear getters
y setters
, es importante saber que, a diferencia de otros lenguajes de programación, Python no tiene campos ocultos por lo que tendrá acceso a las variables dentro de una clase directamente a través de la notación de puntos.
Podemos lograr getters
y setters
usando funciones normales, función property()
y decoradores property()
.
Use una función para crear Getter y Setter en Python
Las funciones de clase típicas llamadas métodos son útiles para crear captadores
y establecedores
, y podemos configurarlos fácilmente utilizando el concepto de auto
.
El método devuelve la propiedad para el captador
, y para los establecedores
, el método vincula el argumento a la propiedad. Para mostrar, usaremos un Employee
que tiene una propiedad de posición
, el método getter
llamado getPosition
, y el método setter
llamado 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())
Producción :
Engineer II
Senior Engineer
Pero esta configuración o enfoque no tiene un comportamiento especial.
Usa la función property()
para crear Getter y Setter en Python
Para obtener un comportamiento especial, podemos hacer uso de la función property()
que crea y devuelve un objeto de propiedad, que contiene tres métodos, getter()
, setter()
y delete()
.
Ayuda a proporcionar una interfaz para los atributos de instancia. Esta funcionalidad nos permite crear fácilmente todas las habilidades getter
y setter
.
Para usar la función propiedad()
, necesitamos establecer cuatro valores de argumento que son funciones que hacen de propiedad()
, una función de orden superior.
Los métodos getter
, setter
y delete
son sus argumentos (que son todos opcionales) y devuelve el objeto de propiedad.
property(fget, fset, fdel, doc)
Usemos la función property()
en nuestro código OOP.
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)
Producción :
Engineer II
Senior Engineer
Con la introducción de la función property()
, tenemos el enlace pos
, que contiene el objeto de propiedad que ayuda a mantener seguro el acceso a las propiedades privadas.
Use el decorador @property
para crear Getter y Setter en Python
Podemos implementar la función property()
usando el decorador @property
, y con esto, no hay necesidad de usar los nombres get
y set
dentro de nuestro método.
Con el decorador @property
, podemos reutilizar el nombre de la posición
que definirá las funciones getter
y setter
.
Con @property
, creamos el getter
, y con @position.setter
, creamos el setter
, y eso es obvio con la instrucción print
agregada al código y visible en la salida.
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)
Producción :
Set Position
Set Position
Set Position
Set Position
Get Employee Position:
Engineer II
Get Employee Position:
Senior Engineer
Hay cuatro Establecer posición
debido al método __init__
, que establece la propiedad de posición
inicial cuando se llama a la instancia de la clase, lo que conduce a los dos primeros. Cuando establecemos el valor a los respectivos para los próximos dos, se imprime de nuevo.
Para el captador
, imprime la declaración Obtener puesto de empleado
cuando obtiene el valor de la propiedad, y el captador
solo se llama dos veces. Por lo tanto, las dos declaraciones.
Podemos agregar validación a nuestro código OOP cuando usamos el método setter
.
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)
Producción :
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