您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python利用元类和描述器实现ORM模型的详细步骤

51自学网 2022-02-21 10:47:25
  python
这篇教程python利用元类和描述器实现ORM模型的详细步骤写得很实用,希望能帮到您。

ORM模型:

ORM模型对于后端开发来说肯定是不陌生的,包括很多后端框架比如django,现在都自带这个模型了
ORM(Object Relational Mapping)对象关系映射
Python中的类与数据库之间的映射,对数据的操作就不用编写SQL语言了,因为都封装好了,比如你想插入一条数据,你就直接创建一个对象即可,

类名 ------->>>> 数据库中的表名

属性 ------->>>> 数据库中的字段

对象 ------->>>> 数据库中的一行数据

大致就是上面的映射关系

ORM实现步骤:

1、利用描述器实现对数据库字段的类型、长度限制
2、实现模型类,也就是创建一张表并定义字段
3、利用元类实现映射关系

元类:

1.实例对象是通过类来创建,那类又是通过什么创建的呢?python中所有的类都是通过元类来创建类,且这个元类只有一个那就是type;

class Test:    passt = Test()print(type(Test))  #类是通过元类type创建print(type(t))  #实例对象是通过类创建#输出-----------------------<class 'type'><class '__main__.Test'>

2.除了通过class关键字创建类,我们也可以通过元类type来创建类,type作为python的内置函数,其实他也是一个类,他有两个作用:
1.传入一个变量,返回这个变量的类型;
2.创建类时,第一个参数传入类名,第二个参数传入一个元祖,指定父类,第三个参数传入字典设置类的属性或方法;

#通过元类来创建类test1 = type("test2",(object,),{"name":"xiaoming"})t1 = test1()print(type(test1))print(type(t1))#输出---------------<class 'type'><class '__main__.test2'>

自定义元类:

1.自定义一个元类,这个元类必须继承type,用这个元类创建类时,必须使用metaclass指定他的元类;

class MetaClass(type):    """自定义一个元类,这个元类必须继承type,用这个元类创建类时,必须使用metaclass指定他的元类"""    def __new__(cls, name, bases, dic, *args, **kwargs):        return super().__new__(cls, name, bases, dic)class Test(metaclass = MetaClass):    name = "xiaoming"print(type(Test))#输出----------------<class '__main__.MetaClass'>  #可以看到此时这个类创建是用我们自定义的元类创建的,而不是type创建的

描述器:

1.描述器的定义,只要一个类中实现了__get__、set、__delete__中的一个或几个,这个类的实例就可以叫描述器,那描述器有神么作用呢,在我们给描述器设置属性时,一定会调用描述器里面的
Python实现遗传算法(虚拟机中运行)
Python库

万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。