[英]infinite recursion in python3.3 setter
有人能告訴我為什么在下面的代碼中有遞歸嗎?
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()
我必須從子類調用基類設置器。 我不能直接訪問會員。 有人能告訴我怎么做嗎?
@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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.