type
- 动态的创建类
- 创建一个类对象,需要依次传入三个参数
class
的名称- 继承的父类的集合,python支持多重继承,如果只有一个父类,使用tuple的单元素写法
- class的方法名称以及与函数的绑定
metaclass
- 定义了类之后,就可以根据这个类创建出实例,所以必须先定义类,然后创建实例
- 使用
metaclass
时,先定义metaclass
,然后创建类,最后创建实例 class MyList(list, metaclass=ListMetaclass):
pass在我们传入关键参数metaclass时,它只是python解释器在创建Mylist时,要通过ListMetaclass.new() 来创建,因此,可以通过这个方法来修改类的定义;如果加上新的方法,则可以返回修改后的定义
__new__()
方法接收到的参数依次是
- 当前准备创建的类的对象
- 类的名字
- 类继承的父类的集合
- 类的方法的集合
ORM (object relational mapping)
- 即对象-关系映射,把关系数据库的一行映射为一个对象,就是说一个类对应一个表
- 编写一个orm框架,所有的类都只能动态定义
调试和测试
- 错误处理
- 在程序运行的时候,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错以及发生错误的原因。
- 但是,使用错误码表示是否出错非常不方便,因为函数本身的返回值常常和错误码混在一起;
try except finally
- 当我们认为某段代码可能出错的时候,可以用try来运行这段代码时,如果执行出错,则后续代码不会执行,而是直接跳转到错误处理代码,即except语句,执行完except后,如果有finally语句,则执行语句,至此,