元类

python世界里,一切都是对象.即使定义的一个class,也是一个对象.
我们所熟知的type()函数的作用是返回一个参数的类型,但是实际上,它也有一种完全不同的能力,即接受一个类的一些描述作为参数,然后返回一个类。
举个栗子:

class test(object):
tt = True
def aa(x):
return x
# 就等价于
type("test", (object,), {"tt":True, "aa":lambda x: x})
# (属性和方法本质上都是方法)

元类是什么?元类实际上就是用来创建类的东西。python里面一切都是对象,即使你写的一个class,也会被python创建成一个对象.(Django里面的{model}.objects是不是感觉很怪?实际上就是这个元类的作用)

问题来了,既然类也是一个对象,那这个对象是怎么产生的呢?通过上面代码,就知道实际上是type这个玩意搞的鬼.type是一个元类(metaclass)的基础,在python世界里默认都是用type这个元类来创建类对象.

具体的就不说太多了,放个详细讲解链接:https://blog.csdn.net/weixin_35955795/article/details/52985170


发表评论