标签:
1:元类
元类:类的创建与管理者
所有类的元类是type
class a: pass print(type(a))
结果:<class ‘type‘>
2:定制元类
类的实例化过程:(可看类的基础与要点)
1)调用__new__()创建实例
2)调用__init__()初始化上面创建出来的实例
所以:定制实例便是改变父类的__new__()或__init__()方法
例子:
1 class MyMeta(type): 2 def __init__(self,name,bases,dicts): 3 print(‘Init Instance.‘) 4 5 def __new__(cls,name,bases,dicts): 6 dicts[‘info‘] = lambda self:print(‘Djx.‘) #追加实例方法info() 7 res = type.__new__(cls,name,bases,dicts) #调用父类type的new方法实例化实例 8 res.company = ‘MaiZi‘ #追加属性 9 return res #返回实例 10 11 class custom(metaclass=MyMeta): #用关键字表明元类不是type而是MyMeta 12 pass 13 14 if __name__ == ‘__main__‘: 15 cus = custom() 16 cus.info() 17 print(cus.company) 18 19 20 #Python2.x的写法 21 #class cus: 22 # __metaclass__ = MyMeta 23 # pass
运行结果:
Init Instance.
Djx.
MaiZi
标签:
原文地址:http://www.cnblogs.com/pengsixiong/p/4837214.html