这篇教程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库 |