這個程序的工作,但是當我刪除GETATTR或SETATTR,那麼問題就來了,和ID,名稱不能被發現。 爲什麼會發生這種情況,程序什麼時候運行setattr?我使用了調試模式,並且開玩笑,但它沒有進入函數。Python函數__setattr__和__getattr__
謝謝!
class E(dict):
def __getattr__(self, key):
try:
return self[key]
except KeyError:
raise AttributeError(r"'Model' object has no attribute '%s'" % key)
def __setattr__(self, key, value):
self[key] = value
e = E(id='123', name='abc')
print(e.id)
print(e.name)
'__getattr__'使您可以使用點符號訪問鍵,刪除__getattr__,您仍然可以使用E作爲常規詞典e ['id']', '__setattr__'並不重要,因爲dict超類具有'__setattr__'的自己定義。 – abccd