Hola a todos. Tengo un problema con problema con propiedades DE SOLO LECTURA (solo método get) en python.
Las propiedades son de una clase que extiende de list y sobrecarga sus métodos __iadd__ (+=) e __isub__ (-=).
Mi problema es que puedo usar el operador += con esa propiedad de solo lectura solo si la clase no extiende de object. Adjunto un ejemplo:
Código:
class A(list):
def __iadd__(self, other):
self.append(other)
return self
def __isub__(self, other):
self.remove(other)
return self
class B():
def __init__(self):
self.__a = A()
def __get_a(self):
return self.__a
propA = property(__get_a)
class C(object):
def __init__(self):
self.__a = A()
def __get_a(self):
return self.__a
propA = property(__get_a)
if __name__=="__main__":
b = B()
c = C()
b.propA += 20 #BIEN
b.propA.append(20) #BIEN
c.propA += 20 #¡¡¡ERROR!!!
c.propA.append(20) #BIEN
¿Por qué ocurre esto? ¿Significa que en Python 3.x esto no se puede hacer?
¿Qué puedo hacer para poder usar += con propiedades de solo lectura en clases que extiendan de object?
Saludos gracias.