python 用装饰器重写类的方法

2019-12-12 18:02:11 浏览数 (1)

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

0 人点赞