元类

# class Foo:
#      pass
#
# f1=Foo() #f1是通过Foo类实例化的对象
#
# print(type(f1))
# print(type(Foo))
#
# class Bar:
#     pass
#
# print(type(Bar))


class Foo:
    def __init__(self):
        pass
print(Foo)
print(Foo.__dict__)

def __init__(self,name,age):
    self.name=name
    self.age=age
def test(self):
    print('=====>')
FFo=type('FFo',(object,),{'x':1,'__init__':__init__,'test':test})
print(FFo)
print(FFo.__dict__)

f1=FFo('alex',18)
print(f1.name)
f1.test()

 自定制元类精简版

class MyType(type):
    def __init__(self,a,b,c):
        print('元类的构造函数执行')
    def __call__(self, *args, **kwargs):
        obj=object.__new__(self)
        self.__init__(obj,*args,**kwargs)
        return obj
class Foo(metaclass=MyType):
    def __init__(self,name):
        self.name=name
f1=Foo('alex')
原文地址:https://www.cnblogs.com/jiawen010/p/10191694.html