Python的類裝飾器是一種重載類的方法,它可以通過更改類的屬性、方法或行為,為類增加功能或解除功能。在Python中,常常使用裝飾器來擴展類或對象或增強類或對象的行為,從而提高代碼的復用性和可讀性。
在Python中,類裝飾器是使用@加上裝飾器名字來修飾類的。例如,下面的代碼就演示了一個簡單的類裝飾器:
def decorator(cls): class NewClass: def __init__(self, *args): self.old_class = cls(*args) def __getattr__(self, name): print("You are calling {} method".format(name)) return getattr(self.old_class, name) return NewClass @decorator class Demo: def test(self): print("This is test method") demo = Demo() demo.test()
在上面的例子中,我們定義了一個裝飾器函數decorator,它會用來裝飾一個Demo類。當Demo被裝飾器修飾后,會生成一個新的類NewClass,NewClass繼承原來的Demo類,同時重寫了__getattr__方法。在NewClass重寫的__getattr__方法中,將動態地打印出調用的方法名,并調用原有的方法。
在實際應用中,類裝飾器通常用來保存元數據、添加行為、替換方法、創建新的類、對象初始化等。類裝飾器的使用可以使代碼更加簡潔、優雅,同時避免了大量的代碼復制和粘貼的問題。