day38

一 exec模块
exec是python内置模块

它可以把'字符串形式'的python代码,添加到全局空间或者局部空间中

参数1: 字符串形式的python代码

参数2: 全局名称空间字典

参数3: 局部名称空间字典

全局名称空间

# 1.文本形式的python代码

code = '''
global x
x = 10
y = 20
'''

2.全局的名称空间 {}

global_dict = {'x': 200}

3.局部名称空间 {}

local_dict = {}

exec(code, global_dict, local_dict)
print(global_dict)


局部名称空间

1.文本形式的python代码

code = '''
x = 100
y = 200
def func():
pass
'''

2.全局的名称空间 {}

global_dict = {}

3.局部名称空间 {}

local_dict = {}

exec(code, global_dict, local_dict)
print(local_dict)
二 元类
什么是元类

元类是类的类

type是所有类的类,type就是一个元类

元类的作用

元类可以控制类的产生过程,类的产生过程其实就是元类的调用过程

作用:

​ 元类可以帮我们控制类的创建。

​ 元类可以帮我们控制类的调用。

自定义创建元类

自定义一个元类,继承type,派生出自己的属性与方法

给需要使用的类,通过metaclass指定自定义好的元类

​ -class Chinese(metaclass = '自定义的元类'):

自定义元类

class MyMeta(type):
def init(self,class_name,class_base,class_dict):
if not class_name.istitle():
raise TypeError('类的首字母要大写')

    #控制类中必须要有注释
    if not class_dict.get('__doc__'):
        raise TypeError('类内部必须注释')
        
    super().__init__(class_name,class_base,class_dict)
      
 def __call__(self,*args,**kwargs):
    #调用__new__() --> 创建一个空对象
    obj = object.__new__(self)
    #会执行__init__(obj,*args,**kwargs)
    obj.__init__(*args,**kwargs)
    return obj

class Foo(object,metaclass=MyMeta):
x =10
def init(self,z,y):
self.z = z
self.y = y

foo = Foo(1,2)
三 ORM(对象映射关系程序)
​ 通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,在使用编程语言对数据库进行操作的时候,可以直接使用编程语言的对象模型进行操作

优点:

  1. 使与数据库交互变得简单易行
  2. 构造固化数据结构变得简单易行
原文地址:https://www.cnblogs.com/xwjhyy/p/11799085.html