元类type

自定义元类来创建类,也就是自定义的方法来创建类

python中的类也是对象,是type类的对象

在编译器运行到class Foo的时候自动运行Foo = type('Foo',{object,},{})来创建类对象并放入内存中

下面的例子展示了实例创建的过程

 1 class MyType(type):
 2     def __init__(self, *args,**kwargs):
 3         type.__init__(self,*args,**kwargs)
 4         print('第一步:解释器执行到class Foo时,创建Foo类对象')
 5     def __call__(self, *args, **kwargs):
 6         print('第二步:foo = Foo("foo")时调用元类的__call__方法,在此方法中创建实例')
 7         #foo = Foo("foo") = MyType('Foo',(object,),{})()
 8         obj = self.__new__(self)
 9         print('第四步:实例创建完毕,执行实例的__init__方法')
10         self.__init__(obj, *args, **kwargs)
11         #返回实例,在外部赋值给foo
12         return obj
13 
14 class Foo(object,metaclass=MyType):
15     def __init__(self,name):
16         self.name = name
17     def __new__(cls, *args, **kwargs):
18         print('第三步:返回实例')
19         return object.__new__(cls)
20 # 第一阶段:解释器从上到下执行代码创建Foo类
21 # 第二阶段:通过Foo类创建obj对象
22 foo = Foo('foo')
23 print(foo)
24 print(foo.name)
原文地址:https://www.cnblogs.com/cx59244405/p/8470142.html