1:元類
元類:類的創(chuàng)建與管理者
所有類的元類是type
class a: pass
2:定制元類
類的實例化過程:(可看類的基礎(chǔ)與要點)
1)調(diào)用__new__()創(chuàng)建實例
2)調(diào)用__init__()初始化上面創(chuàng)建出來的實例
所以:定制實例便是改變父類的__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) #調(diào)用父類type的new方法實例化實例 8 res.company = 'MaiZi' #追加屬性 9 return res #返回實例10 11 class custom(metaclass=MyMeta): #用關(guān)鍵字表明元類不是type而是MyMeta12 pass13 14 if __name__ == '__main__':15 cus = custom()16 cus.info()17 print(cus.company)18 19 20 #Python2.x的寫法21 #class cus:22 # __metaclass__ = MyMeta23 # pass運行結(jié)果:
Init Instance.
Djx.
MaiZi
新聞熱點
疑難解答