2
我有兩個類共享很多常見的東西,除了一個功能f(x)
。python類繼承代碼重用
class A(object):
def __init__(self):
// some stuff
def g(self):
// some other stuff
def f(self, x):
// many lines of computations
q = ...
y = ...
return y
class B(A):
def f(self, x):
// same many lines as in A
q = ...
y = ...
// a few extra lines
z = ... # z needs both y and q
return z
在這種情況下,我必須在B類中從頭開始定義f(x)
嗎?是否有一些技巧重新使用A.f(x)
中的代碼?我能想到的
一種方法是使q
實例屬性self.q
,然後執行以下操作
def f(self.x):
y = A.f(self, x)
// a few extra lines
z = ... # using y and self.q
return z
或許讓A.f(x)
回報都q
和y
,然後調用A.f(self, x)
在B的的f(x)
定義。
這些方法是否是標準方法?有更好的東西嗎?
'self.q'將是一個實例屬性。 –
已更正。謝謝。 – nos
似乎是對我有效的方法。雖然'B'沒有繼承'g'函數,但它有關係嗎? –