1104 回顾

昨日回顾

exec

可以将字符串形式的python代码添加到全局/局部名称空间中.

元类

什么是元类

元类是类的类,type是元类的类

使用元类的目的

控制类的创建与调用

如何写元类

自定义元类

自定义一个类,继承type
type 内部触发了call,然后调用new创建一个空对象,将空对象以及括号内所有的参数一并传给__init
def __call__() ----  def __new()__()   --- def__init__

如何将元类引用到需要元类中

class类(metaclass = 元类名)

手动创建类

调用type

类名,基类父类,类的名称空间

4.优酷项目的数据层

ATM

    dict--json
    优点:
        跨平台,速度快

选课系统

    对象 -- bytes  --  pickle

​   优点:可以通过对象.属性的方式存值

优酷系统

    集成ATM + 选课系统的优点
    存值:
        对象 -- dict -- pymysql -- MySQL
    取值:
        MySQL  --  pymysql --  dict  --- 对象
    封装ORM:
    
        1.字段类型
        -Field
        name/column_type/primary_key/default
            -string
            -integer
            
        2.写models类
        -继承dict
            可以接受任意个数的关键字参数
            问题:字典无法通过队形啊.属性的方式存取值
            解决: 在MOdels类中__setattr__,__getattr__
                __setattr__(self,key,value)
                    self[key] = value
                __getattr__(self,item)
                    return self.get(item)
                    
        3.写元类
            - 继承type类
                1.获取一张表名
                2.判断数据表类中是否有一个唯一主键
                3.将所有字典类型都存入一个独立的mappings字典中
                    - 方便获取
                

ORM

增删改查
    - save: insert into...
    - del:  delete  ...
    - update: update set ...    
    - selete: select from...

猜你喜欢

转载自www.cnblogs.com/fwzzz/p/11802255.html