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。