生活随笔
收集整理的這篇文章主要介紹了
metaclass
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
用metaclass來指定類C的元類是MyType class MyType:def __init__(cls, *args, **kwargs):print('here!')#由于metaclass=MyType,所以執(zhí)行到這一步的時(shí)候,會(huì)調(diào)用MyType的構(gòu)造函數(shù)
class C(metaclass=MyType):def __init__(self):pass
?
對象后面跟(),是要執(zhí)行類中的call方法。 類C是一個(gè)對象,是元類MyType創(chuàng)建了它。遇到C()是要調(diào)用MyType的call obj是一個(gè)對象,是類C創(chuàng)建了它。遇到obj()是要調(diào)用C的call 以下代碼調(diào)用方法的順序,按照數(shù)字順序先后執(zhí)行
class MyType(type):def __init__(cls, *args, **kwargs):super(MyType, cls).__init__(*args, **kwargs)def __call__(cls, *args, **kwargs):#3.調(diào)用C類的__new__方法obj = cls.__new__(cls, *args, **kwargs)#4.調(diào)用C類的__init__方法cls.__init__(cls)#1.執(zhí)行到class C(metaclass=MyType)的時(shí)候,調(diào)用MyType的__init__方法
class C(metaclass=MyType):def __init__(self):passdef __new__(cls, *args, **kwargs):return object.__new__(cls, *args, **kwargs)#2.執(zhí)行到C()的時(shí)候,調(diào)用MyType的__call__方法
obj = C()
?
轉(zhuǎn)載于:https://www.cnblogs.com/dongmengze/p/9523008.html
總結(jié)
以上是生活随笔 為你收集整理的metaclass 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。