這兩個代碼示例有什麼區別?在python 3.x中'super().__ init __()'是什麼意思?
1:
class SubType(type):
def __init__(cls, name, bases, dct):
super().__init__(name, bases, dct)
2:
在class SubType(type):
def __init__(cls, name, bases, dct):
pass
這兩個代碼示例有什麼區別?在python 3.x中'super().__ init __()'是什麼意思?
1:
class SubType(type):
def __init__(cls, name, bases, dct):
super().__init__(name, bases, dct)
2:
在class SubType(type):
def __init__(cls, name, bases, dct):
pass
一種情況下要調用的基類的__init__
方法的所有類(即類型) - 和在個e-其他你AREN 「T。
由於此方法默認不執行任何操作,因此兩個列表實際上沒有區別。
(真正執行類創建魔元類__new__
方法 - 這是不可能有Python中的新對象,而無需調用天然鹼基元類__new__
方法
超級讓你避免提及。基類可以很好,但主要優點是多重繼承,其中可以發生各種各樣的fun stuff,如果還沒有,請參考standard docs on super
塊1中的代碼將在Python 2,但會通過Python 3.代碼塊2將通過。
在python 3.x中,它意味着調用超類的__init__方法(即,類型)(就像它是當前類的一個方法SubType一樣,因爲當前類是超類的派生類)。
它是與調用超(類型,個體經營).__的init __()在Python 2.x的
例如:
class type:
def __init__(a):
print(a)
class SubType(type):
def __init__(a):
super().__init__(a)
>> obj = SubType(2)
2
>>
你忘了'self',該代碼不起作用 – CornSmith