Estoy usando Python 3.8.6 y este funciona bien
class A:
@property
def _a(self):
return getattr(self, '_a_', 0)
@_a.setter
def _a(self, value):
self._a_ = value
a = A()
print(a._a) # prints 0
a._a = 10
print(a._a) # prints 10 as expected
Esto no funciona
class A:
@property
def _a(self):
return getattr(self, '__a', 0)
@_a.setter
def _a(self, value):
self.__a = value
a = A()
print(a._a) # prints 0
a._a = 10
print(a._a) # prints 0 again
Que alucinante! la única diferencia entre el primero y el segundo ejemplo es que el atributo privado __a
en lugar de _a_
Alguna idea de por qué? Yo no era capaz de averiguar
classname
pausa para el subclases, ya que la carta está escrita en la clase base para el atributo nombre todavía serán alterados para_A__a
.