Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/02/2015, 09:59
SARGE553413
 
Fecha de Ingreso: febrero-2014
Mensajes: 55
Antigüedad: 10 años, 1 mes
Puntos: 3
Problema: properties y clases que extienden de object

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.