今日內容
exec模快
exec 是一个python的内置模块
exec的作用
可以把‘字符串形式’的python代码,添加到全局或者局部名称空间中
exec的使用方法
- 参数一:字符串形式的python代码
- 参数二:全局名称空间字典
- 参数三:局部名称空间字典
调用exec()
元类
什么是元类
元类就是类的类,Chinese类的类是type,type是所有类的类,所以type就是一个元类
元类的作用
元类可以帮我们控制类的创建和调用
怎么自定义创建元类
-
自定义一个元类,继承type,派生出自己的属性和方法
-
给需要使用的类,通过metaclass指定自定义好的元类
如:
class chinese(mataclass='自定义的元类')
优酷架构
ATM架构
优点:数据可以跨平台
缺点:不能存对象,也不能直接获取对象
不能通过“对象.属性”的方式存取值
存储速度比pickle慢
选课系统架构
优点:可以通过“对象.属性”的方式存取值
能存对象,也能直接获取对象
如:pickle
缺点: 不能跨平台
优酷架构
- 数据层
- 存储对象 ---->dict ----> json ----> Mysql
- MySQL ----> Json ----> dict ----> 获取对象
ORM
对象关系映射----> 映射到数据库MYSQL中的数据表
类名 ----> 表名
对象 ----> 一条记录
对象.属性 ----> 字段
模拟Django的ORM ,为了将数据库的增删改查全部封装成一个个的方式,比如save,delete,update,select
ORM三个问题
-
解决代码冗余问题
解决方式:继承一个父类,父类中定义一个
__init__
-
无法预测每一张表中的字段是什么,无法通过父类的
__init__
解决问题解决方法:通过继承字典内部的
__init__
,可以接受任意个数的关键字参数 -
继承字典的类实例化的对象,无法通过“对象.属性”的方式存取值
解决方法:通过
__setattr__
,__getattr__
来实现,让字典对象与普通对象一模一样,并且具备字典原有的特性