软件开发领域中最经典的口头禅就是“don’t repeat yourself”。 也就是说,任何时候当你的程序中存在高度重复(或者是通过剪切复制)的代码时,都应该想想是否有更好的解决方案。 在Python当中,通常都可以通过元编程来解决这类问题。 简而言之,元编程就是关于创建操作源代码(比如修改、生成或包装原来的代码)的函数和类。 主要技术是使用装饰器、类装饰器和元类。不过还有一些其他技术, 包括签名对象、使用 exec()
执行代码以及对内部函数和类的反射技术等。 本章的主要目的是向大家介绍这些元编程技术,并且给出实例来演示它们是怎样定制化你的源代码行为的。
内容:
- 在函数上添加包装器
- 创建装饰器时保留函数元信息
- 解除一个装饰器
- 定义一个带参数的装饰器
- 可自定义属性的装饰器
- 带可选参数的装饰器
- 利用装饰器强制函数上的类型检查
- 将装饰器定义为类的一部分
- 将装饰器定义为类
- 为类和静态方法提供装饰器
- 装饰器为被包装函数增加参数
- 使用装饰器扩充类的功能
- 使用元类控制实例的创建
- 捕获类的属性定义顺序
- 定义有可选参数的元类
- *args和**kwargs的强制参数签名
- 在类上强制使用编程规约
- 以编程方式定义类
- 在定义的时候初始化类的成员
- 利用函数注解实现方法重载
- 避免重复的属性方法
- 定义上下文管理器的简单方法
- 在局部变量域中执行代码
- 解析与分析Python源码
- 拆解Python字节码