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:
¿Por qué ocurre esto? ¿Significa que en Python 3.x esto no se puede hacer?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
¿Qué puedo hacer para poder usar += con propiedades de solo lectura en clases que extiendan de object?
Saludos gracias.