Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Uso de getters y setters | Encapsulamiento
Programación Orientada a Objetos en Python

bookUso de getters y setters

Desliza para mostrar el menú

Las propiedades y los getters/setters proporcionan acceso controlado a los datos de la clase, convirtiendo el acceso simple a atributos en interacciones potentes, validadas y calculadas. Sirven de puente entre el uso directo de atributos y el control basado en métodos, combinando legibilidad con robustez.

Las propiedades en Python utilizan el protocolo descriptor internamente. Esto permite que los métodos decorados con @property se comporten como atributos, ejecutando al mismo tiempo lógica personalizada.

12345678910111213141516171819202122
class Temperature: def __init__(self, celsius): self._celsius = celsius @property def celsius(self): return self._celsius @celsius.setter def celsius(self, value): if -273.15 <= value <= 1e4: # validation self._celsius = value else: raise ValueError("Invalid temperature") @property def fahrenheit(self): return (self._celsius * 9/5) + 32 t = Temperature(25) print(t.fahrenheit) # Computed property t.celsius = -300 # Raises ValueError
copy

Patrones profesionales incluyen evaluación perezosa para cálculos costosos, almacenamiento en caché para valores accedidos con frecuencia, mensajes de error claros para validación y documentación exhaustiva del comportamiento de las propiedades. Las propiedades deben sentirse como atributos naturales y, al mismo tiempo, proporcionar el control de los métodos.

Consideraciones de rendimiento son importantes para propiedades accedidas frecuentemente. Los getters/setters simples tienen una sobrecarga mínima, pero la validación compleja o el cálculo intensivo pueden degradar el rendimiento. En estos casos, el almacenamiento en caché, la evaluación perezosa y los algoritmos eficientes son esenciales.

La elección entre propiedades vs. getters/setters tradicionales depende de las necesidades: las propiedades ofrecen una sintaxis más limpia y se alinean con los modismos de Python, mientras que los métodos explícitos pueden ser mejores para la validación compleja o las API basadas en métodos.

question mark

¿Qué ventaja ofrecen las propiedades de Python sobre los métodos tradicionales getter y setter?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 5. Capítulo 3
some-alt