python 用装饰器重写类的方法

2019-12-04  本文已影响0人  SkTj

def log_getattribute(cls):
# Get the original implementation
orig_getattribute = cls.getattribute

# 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

上一篇下一篇

猜你喜欢

热点阅读