简单的python继承,单例类失败,没有堆栈跟踪


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

最新更新