day 38 元类

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三个问题

  1. 解决代码冗余问题

    解决方式:继承一个父类,父类中定义一个__init__

  2. 无法预测每一张表中的字段是什么,无法通过父类的__init__解决问题

    解决方法:通过继承字典内部的__init__,可以接受任意个数的关键字参数

  3. 继承字典的类实例化的对象,无法通过“对象.属性”的方式存取值

    解决方法:通过__setattr____getattr__来实现,让字典对象与普通对象一模一样,并且具备字典原有的特性

    2.exec的作用:        '''        x = 10        def func1():            pass        '''        可以把"字符串形式"的python代码,添加到全局空间或局部名称空间中。
    3.怎么用:            # 参数1: 字符串形式的python代码            # 参数2: 全局名称空间字典            # 参数3: 局部名称空间字典        调用exec()

猜你喜欢

转载自www.cnblogs.com/fjn839199790/p/11794570.html