![](/img/trans.png)
[英]Why using __dict__ in __setattr__ causing infinite loop in __getattr__
[英]Using the __dict__ attribute in __getattr__
這是帶有自定義__getattr__
實現的簡單類:
class Wrapper(object):
def __init__(self, obj):
self.obj = obj
def __getattr__(self, name):
func = getattr(self.__dict__['obj'], name)
if callable(func):
def my_wrapper(*args, **kwargs):
print "entering"
ret = func(*args, **kwargs)
print "exiting"
return ret
return my_wrapper
else:
return func
我在這里不明白的是為什么要使用getattr(self.__dict__['obj'], name)
代替更簡潔的getattr(self.obj, name)
?
因為據我所知self.__dict__['obj']
所做的是調用self.obj
的值。 可能與向后兼容有關嗎?
我相信,此代碼存在的原因–作者試圖逃避無限遞歸循環–不通過self.obj
觸發__getattr__
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.