python - 重构 - 推广派生类

时间:2015-12-02 19:48:48

标签: python refactoring

我在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 ...

1 个答案:

答案 0 :(得分:3)

如果我理解你的问题,你可以尝试使用mixin课程:

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')