假設我有這個類:如何從超類方法調用子類的方法?
class MyClass(object):
def uiFunc(self, MainWindow):
self.attr1 = "foo"
self.attr2 = "bar"
def test():
from subclassfile import MySubClass
MySubClass.firstFunc(self, 2, 2)
test()
而這個子類中的其他文件:
from classfile import MyClass
class MySubclass(MyClass):
def firstFunc(self, a, b):
c = a + b
d = self.secondFunc(self, c)
return d
def secondFunc(self, c):
d = c/2
return d
這是一個愚蠢的例子,但代表正是我試圖做的。 我想從第一個函數內的子類中調用第二個函數。 但是,當我這樣做時,它返回一個錯誤,說MyClass沒有這樣的功能。 所以我想我不應該在函數名稱前面使用self
。但是當我不這樣做時,它也會產生錯誤。
所以我的問題是: 如何在子類的第一個函數內部訪問第二個函數?
編輯:
謝謝大家的幫助。我會更好地解釋我正在嘗試做什麼,而我認爲我的實現在代碼中非常糟糕。 MyClass是代碼的主要類,其中所有的部件和主要功能都是。 此類上還有一個按鈕,它與「測試」功能綁定在一起。所以當按下按鈕時,整個事情都應該起作用。 MySubClass文件是將數據導出到某個文件的輔助模塊。 firstFunc是這個模塊中的主要功能,它處理所有的數據,而secondFunc只是建立文件的模板。所以我在firstFunc中調用了這個secondFunc,以便模板被加載,然後將數據寫入文件。 我使這個MySubClass繼承自MyClass,以便它可以直接從MyClass訪問數據庫和其他變量。
所以我想我可以做到這一點。但我對這種實現並不是很有經驗。另外,對不起我的英語不好。
「這是一個愚蠢的例子,但代表了我正在嘗試做的事情」。但是,爲什麼要在超類方法中調用子類中的方法?這是毫無意義的...... – brandizzi
*爲什麼*你想這樣做?正如你所描述的那樣,你真的不應該這樣做。真的*真的*不應該。請描述你想要達到的目標。幾乎肯定有一個正確的方法來實現它。 –
我剛剛編輯了這個問題,以便我的目標變得更加清晰。謝謝。 –