asi*_*hal 1 python properties python-3.x
有人可以告诉我为什么在下面的代码中有一个递归?
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()
Run Code Online (Sandbox Code Playgroud)
我必须从子类调用基类setter.我不被允许直接访问该成员.有人能告诉我怎么做其他方式吗?
@a.setter
def a(self, value):
print ("called a setter")
self.a = value
Run Code Online (Sandbox Code Playgroud)
当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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |