内容绝大部分出自《Python高级编程》,Luke Sneeringer,清华大学出版社,Python版本2.7。
代码部分经修改可以完整运行,方便理解和直接测试。
装饰器接受一个可调用的对象(函数,类)作为参数,返回一个可调用的对象(函数,类),所即既可以装饰类返回类,也可以装饰函数返回类。
类装饰器可以与被装饰类的属性交互,修改类的方法(包括私有方法)等。
示例
上述装饰器的方法可以用mixin来实现,也很简单。
装饰器可以装饰一个函数,但是返回一个类,因为两者都是可调用的,并且可以将类理解为函数的更高层次。
类可以比函数定义更多内容。
|
|
上述装饰器的改进版: