元类
exec模块
exec的作用:
'''
x = 10
def func1():
pass
'''
可以把"字符串形式"的python代码,添加到全局空间或局部名称空间中。
怎么用:
参数1: 字符串形式的python代码
参数2: 全局名称空间字典
参数3: 局部名称空间字典
调用exec()
元类
1.什么是元类?
元类就是类的类,Chinese类的类是type,type是所有类的类,type就是一个元类。
2.元类的作用?
元类可以帮我们控制类的创建。
元类可以帮我们控制类的调用。
3.怎么自定义创建元类:
1) 自定义一个元类,继承type,派生出自己的属性与方法。
2) 给需要使用的类,通过metaclass指定自定义好的元类。
- class Chinese(metaclass='自定义的元类'):
ORM
ORM: 对象关系映射 ---> 映射到数据库MySQL中的数据表
类名 ---> 表名
对象 ---> 一条记录
对象.属性 ---> 字段
模拟Django的ORM,为了将数据库的 增、删、改、查,全部封装成
一个个的方式,比如: save, delete, update, select。
ORM三个问题
-
解决代码冗余问题
解决方式:继承一个父类,父类中定义一个
__init__
-
无法预测每一张表中的字段是什么,无法通过父类的
__init__
解决问题解决方法:通过继承字典内部的
__init__
,可以接受任意个数的关键字参数 -
继承字典的类实例化的对象,无法通过“对象.属性”的方式存取值
解决方法:通过
__setattr__
,__getattr__
来实现,让字典对象与普通对象一模一样,并且具备字典原有的特性