Comparación, operaciones, contenedores, privacidad, propiedades y herencia
En esta parte implementamos comparación, aritmética, contenedores personalizados, miembros privados por convención, propiedades y herencia (incluida la clase base object y la sobrescritura de métodos).
__eq__, __lt__, etc.)Nota: implementar lo necesario según el orden total o parcial deseado.
__add__, __sub__)class Vector:
def __init__(self, x, y):
self.x = x; self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def __sub__(self, other):
return Vector(self.x - other.x, self.y - other.y)
v = Vector(1,2) + Vector(3,4)
w = Vector(5,5) - Vector(2,1)
print((v.x, v.y), (w.x, w.y))Criterio: retornar nuevas instancias (inmutabilidad semántica del resultado).
__len__, __getitem__)Idea: implementar protocolos hace que el objeto sea interoperable con Python (for, slicing, etc.).
_interno y __mangleNota: Python confía en convenciones más que en restricciones fuertes.
@property)Ventaja: interfaz de atributo con validación/cómputo bajo el capó.
Punto clave: la clase base object está en la raíz del MRO; la sobrescritura permite comportamiento especializado.
@property frente a exponer atributos públicos sin control?