除了可以用在方法上,其實python的裝飾器也可以作用於類上,在不改變類的情況下,給類增加一些額外的功能.
# 下面是一個重寫了特殊方法 __getattribute__ 的類裝飾器,可以打印日志: def log_getattribute(cls): origin_getattribute=cls.__getattribute__ def new_getattribute(self,name): print('greeting:',name) return origin_getattribute(self,name) cls.__getattribute__=new_getattribute return cls #應用 @log_getattribute class A: def __init__(self,x): self.x=x def spam(self): pass if __name__=='__main__': a=A('x') print(a.x) print(a.spam()) #輸出 greeting: x x greeting: spam None