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