2015-12-02 55 views
0

我有Python以下的一段代碼。有兩個類別A2B2,其共享功能f1()f2()。它們的基類有所不同,分別來自AB蟒蛇 - 重構 - 推廣派生類

我可以看到如何在C++中使用templates來概括這一點。但我不知道如何做到這一點Python

class A2(A): 
    def __init__(self): 
     A.__init__(self) 
     self._Z = Z('high') 

    def f1(self): 
     return self._Z.f1() 

    def f2(self): 
     return self._Z.f2() 

    # ... more functions ... 


class B2(B): 
    def __init__(self): 
     B.__init__(self) 
     self._Z = Z('low') 

    def f1(self): 
     return self._Z.f1() 

    def f2(self): 
     return self._Z.f2() 

    # ... more functions ... 

回答

3

如果我理解你的問題,你可以嘗試一個混合類:

class Mixin(object): 

    def f1(self): 
     return self._Z.f1() 

    def f2(self): 
     return self._Z.f2() 


class A2(A, Mixin): 

    def __init__(self): 
     A.__init__(self) 
     self._Z = Z('high') 


class B2(B, Mixin): 
    def __init__(self): 
     B.__init__(self) 
     self._Z = Z('low') 
+0

有沒有一種方法,以避免多重繼承? – Anand

+0

@Anand從'Mixin'繼承'A'和'B'。但爲什麼? –

+0

Python沒有C++所具有的多重繼承問題。 – chepner