def log_getattribute(cls): # Get the original implementation orig_getattribute = cls.getattribute
代码语言:javascript复制# Make a new definition
def new_getattribute(self, name):
print('getting:', name)
return orig_getattribute(self, name)
# Attach to the class and return
cls.__getattribute__ = new_getattribute
return cls
Example use
@log_getattribute class A: def init(self,x): self.x = x def spam(self): pass
diaoyong
a = A(42) a.x getting: x 42 a.spam() getting: spam