내가 사용하는 파이썬 3.8.6 과이
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
이 작동하지 않는
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
는 초! 유일한 차이 첫 번째와 두 번째 예는 개인 특성 __a
대 _a_
이유가 무엇입니까? 할 수 있습니 그것을 알아내기
classname
이 휴식을 위해 서브 클래스이기 때문에,세터에 기록된 기본 클래스의 속성 이름이 여전히 망가기_A__a
.