我想從父類繼承類構造函數。在嘗試了幾個關於堆棧溢出的建議之後,我想我會自己問一個問題,試圖理解1)爲什麼這個代碼是錯誤的,以及2)如何糾正它?Python中的繼承:類型錯誤,錯誤的參數數
的父類:
class Submit_Copasi_Job(object):
'''
Submit a properly formatted copasi file to sun grid engine
'''
def __init__(self,copasi_file,report_name):
self.copasi_file=copasi_file
self.copasiML_str=self._read_copasiML_as_string()
self.report_name=report_name
self.submit_copasi_job_SGE()
def _read_copasiML_as_string(self):
'''
Read a copasiML file as string
'''
assert os.path.exists(self.copasi_file), "{} does not exist!".format(self.copasi_file)
with open(self.copasi_file) as f:
fle = f.read()
return fle
....
子類(嘗試使用super(SubClass, self).__init__(...)
,但很明顯,我有什麼錯)
class Submit_Copasi_Multijob(Submit_Copasi_Job):
def __init__(self):
super(Submit_Copasi_Multijob,self).__init__(copasi_file,report_name)
def test(self):
return self.copasi_file
運行代碼
fle='D:\\MPhil\\Model_Building\\Models\\TGFB\\Fli1_Models\\M7.cps'
s=Submit_Copasi_Multijob(fle,'rep.txt')
print s.test()
我的全部迄今爲止的嘗試導致了類似的錯誤:
s=Submit_Copasi_Multijob(fle,'rep')
TypeError: __init__() takes exactly 1 argument (3 given)
查看'Submit_Copasi_Multijob'的'__init__'方法...'copasi_file'和'report_name'定義在哪裏?你忘了添加參數。 – Bakuriu
@Bakuriu是的,就是這樣。謝謝。如果你在下面寫一個答案,我會接受。 – CiaranWelsh