python元类(metaclass)简单理解

class Person(type):
    def __new__(cls,name,bases,attrs):
        '''
        元类:类的抽象模型,可以理解为类是元类的对象,元类是对类进行限定,类是根据元类
        进行构建的,类似类和对象的关系。
        :param name: 声明该元类的类名
        :param bases: 声明该元类的类的父类,可以为空
        :param attrs: 声明该元类的类的属性
        :return:
        '''
        print('name:',name)
        print('bases:',bases)
        print(attrs)

class Student(object,metaclass=Person):
    '''
    object:父类
    metaclass:元类
    '''
    def __new__(cls, *args, **kwargs):
        pass
    def a(self):
        pass

类继承和元类的区别:

类继承是针对类和对象,声明元类是针对元类和类的。继承是实现子类功能的可扩展性,而声明元类是对类构建的限定。元类和类之间类似类和对象之间的关系。

默认的object的__new__是针对对象的创建,而type中的__new__是针对类的创建。简单说继承type就是元类。比如上面的例子元类Person。

猜你喜欢

转载自blog.csdn.net/ryuhfxz/article/details/86772007