class B:
@property
def x(self):
print('x getter')
return self.x
@x.setter
def x(self, x) -> None:
print('x setter')
self.x = x + 1
class A(B):
__instance = None
def __new__(self):
''' Virtually private constructor '''
if not A.__instance:
A.__instance = object.__new__(self)
A.__instance.__setup()
return A.__instance
def __setup(self):
self.x = 10
def minus(self):
self.x -= 3
a1 = A()
类A
是一个单例类
我不确定是什么原因导致程序失败,因为没有堆栈跟踪,它只是失败。
您没有正确使用@property
和setter。您需要为实际的底层属性使用不同的名称:
class B:
@property
def x(self):
print('x getter')
return self._x
@x.setter
def x(self, x) -> None:
print('x setter')
self._x = x + 1