元类
一、 类也是对象
二、使用type创建类
type(类名,由父类名称组成的元组(针对继承情况下,可以为空),包含属性的字典(key和value)
元类创建class类,class创建实例对象(元类一种特殊的类)
type 是动态创建类
def upper_attr(class_name, class_parents,class_attr):
# 遍历属性字典,把不是__开头的属性名字变为大写
new_attr = {}
for name,value in class_attr.items():
if not name.startswith("__"):
new_attr[name.upper()] = value
# 调用 type 来创建一个类
return type(class_name, class_parents,new_attr)
class Foo(object, metaclass=upper_attr): #选择使用哪个类,不用type执行,默认type创建
bar = 'bip'
print(hasattr(Foo, 'bar'))
print(hasattr(Foo, 'BAR'))
f = Foo()
print(f.BAR)
三、元类实现ORM
1)ORM是什么
- 基本概念
ORM是python的编程语言后端web框架Django的核心思想,Object Relational Mapping, 即对象-关系映射。一句话说,创建一个实例对象,用创建它的类名当做数据表名,用创建它的类属性对应数据表的字段,当这个实例对象操作时,能够对应MySQL语句
u.sa
ve() 相当于执行 - 总结
类名对应着表名,类中相关的信息,对应着每个字段
创建这个类的目的是通过这样一个类,将类转化为执行SQL语句,
ORM:不用主动手写SQL语句,定义一个类,创建实例对象,调用某个方法,实现这个SQL语句执行
创建一个类,就像创建一个表,这是Django框架最核心的东西