有人能告诉我为什么下面的代码中有递归吗?
class A:
def __init__(self):
self.a = 0
@property
def a(self):
print ("called a getter")
return self.a
@a.setter
def a(self, value):
print ("called a setter")
self.a = value
class B(A):
def check(self):
a = 10
if __name__ == "__main__":
bb = B()
bb.check()
我必须从子类中调用基类 setter 。我不允许直接访问该成员。有人可以告诉我如何做其他方式吗?
请您参考如下方法:
@a.setter
def a(self, value):
print ("called a setter")
self.a = value
当self.a = value执行时,它会再次调用你的方法a(self, value),它会执行self.a = value 再次调用 a(self, value)... 等等
传统的解决方案是为属性和底层属性使用不同的名称。前任。您可以在前面添加下划线。
class A:
def __init__(self):
self._a = 0
@property
def a(self):
print ("called a getter")
return self._a
@a.setter
def a(self, value):
print ("called a setter")
self._a = value
