8. 装饰类的装饰器

装饰器的实质

替换被装饰函数(或类)的变量,让他重绑定一个函数(或者类)。

用装饰器可以装饰类型:

  1. 函数
  2. 方法

Python的类名也是变量,也可是使用装饰器来替换。

装饰类的装饰器语法

@装饰器n <换行>
...
@装饰器2 <换行>
@装饰器1 <换行>
class 类名:
    语句块

示例

# 装饰类的装饰器 示例

def replace_animal(fn):
    class Cat:
        def speak(self):
            print('喵')
    return Cat

@replace_animal
class Dog:
    def speak(self):
        print('旺')

dog = Dog()
dog.speak()

上述装饰器将 Dog 变量重新绑定成了 class Cat