Вот простой класс с настроенной реализацией __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.obj, name)
используется *1006*, что более кратко?
Потому что, насколько я понимаю, self.__dict__['obj']
вызывает значение self.obj
.Может ли это иметь какое-либо отношение к обратной совместимости?