版权声明:17602128911 https://blog.csdn.net/bus_lupe/article/details/86422407
元类是MyTyep
元类的实例Foo类
Foo类的实例f1
元类实例化的时候执行元类的__init__,产生Foo类,元类中的self都是cls
元类的实例Foo实例化的时候执行Foo类的__init__,产生实例f1,元类实例中的self都是f1
class MyType(type):
# self = <class '__main__.Foo'>
# what = Foo
# base = ()
# dict = {'__module__': '__main__', '__qualname__': 'Foo', '__init__': <function Foo.__init__ at 0x0000021F250F8950>}
# __init__在元类实例化创建Foo类时调用
def __init__(self, what, base, dict):
print('>>元类初始化')
# 在MyType的实例Foo类实例化时被调用
def __call__(self, *args, **kwargs):
# 创建Foo类的实例 = obj
obj = object.__new__(self)
# Foo类实例化的时候执行Foo类的__init__方法
self.__init__(obj, *args, **kwargs)
# f1 = obj
return obj
class Foo(metaclass=MyType):
def __init__(self, name):
self.name = name
f1 = Foo('lucy')