我想覆蓋使用python 3.4.3的python類的__setattr__
方法。我發現this answer,但它似乎不工作,因爲我得到一個錯誤。如何正確調用python3中的默認__setattr__?
完整的代碼如下:
class TestClass(object):
def __init__(self):
self.x = 4
def __setattr__(self, name, value):
# do something special given the 'name'
#default behavior below
super(TestClass).__setattr__(name, value)
test = TestClass()
和誤差是
Traceback (most recent call last):
File "client_1.py", line 26, in <module>
test = TestClass()
File "client_1.py", line 17, in __init__
self.x = None
File "client_1.py", line 23, in __setattr__
super(TestClass).__setattr__(name, value)
AttributeError: 'super' object has no attribute 'x'
我假定屬性,因爲它是尚未定義x
不能設置。而行試圖定義這個屬性附加傷害(在__init__
)不能定義屬性,因爲它調用覆蓋方法...
如何定義不含蓄調用覆蓋__setattr__
方法則屬性x
?
將您的通話與您鏈接中的通話進行比較。你傳遞了不同的論點。 – user2357112