我有這樣的:python子類是否必須調用它們的超類構造函數?
#!/usr/bin/env python
class myclass1(object):
def __init__(self, arg1):
self.var1 = arg1
class myclass2(myclass1):
def f1(self):
print "in f1"
class myclass3(myclass1):
def __init__(self, arg1):
self.var2 = arg1
self.c2 = myclass2()
p= myclass3(5)
這給了我一個錯誤:
Traceback (most recent call last):
File "./pythoninherit.py", line 39, in <module>
p= myclass3(5)
File "./pythoninherit.py", line 29, in __init__
self.c2 = myclass2()
TypeError: __init__() takes exactly 2 arguments (1 given)
問: 爲什麼錯誤給出?
爲什麼在這種情況下自動調用myclass1 __init__
?
我的印象是,這不會發生在python中。
的'__init__'方法是繼承。 'class1'中的'__init__'方法需要一個參數,並且您沒有參數就調用它。 –
,因爲您沒有用足夠的參數調用'__init__'。所以要回答你的標題「是」。當你構造你的子類時,你需要傳遞將傳遞給父類的參數。 – Cfreak
@IsmailBadawi請將此添加爲答案。 – abc