Python元类

34 阅读1分钟

元类

元类就是用来创建这些类(对象)的,元类就是类的爹,通过自定义元类可以控制类对象的初始化过程

比如创建一个A类

A = MetaClass()
object = MyClass()

函数type实际上是一个元类。type就是Python在背后用来创建所有类的元类。你可以通过检查__class__属性来看到这一点

  • 自定义元类

元类会自动将传给type的参数作为自己的参数传入

def upper_attr(future_class_name, future_class_parents, future_class_attr):
    '''返回一个类对象,将属性都转为大写形式'''
    attrs = ((name, value) for name, value in future_class_attr.items() if not name.startswith('__'))
    uppercase_attr = dict((name.upper(), value) for name, value in attrs)
    return type(future_class_name, future_class_parents, uppercase_attr)#返回一个类
class A(object,metaclass=upper_attr):
#     __metaclass__ = upper_attr # python2写法
    a = 'abc'
a = A()
a.A # abc