可以在python3中进行替代继承吗?

时间:2019-10-15 16:37:29

标签: python-3.x inheritance

我的目标:

class BaseClass1:
    def f(self)

class BaseClass2:
    def f(self)

class DerivedClass:
    def g(self):
        self.f() # this is either BaseClass1::f() or BaseClass2::f(), depending on instantiation

DerivedClass所在的位置可以使用以下任何一种方式

class DerivedClass(BaseClass1)

class DerivedClass(BaseClass2)

我了解这可以解决问题本身:

class UtilityClass1:
    def f(self)

class UtilityClass2:
    def f(self)

class DerivedClass:
    def __init__(self, utilityInstance):
        self.utility = utilityInstance
    def g(self):
        self.utility.f()

d = DerivedClass(UtilityClass1())
d = DerivedClass(UtilityClass2())

但是,我特别想知道是否还有另一种方式可以通过继承(可能使用某些装饰器或其他方式)进行继承。


只需包装一下:

输入: 3个类别定义:

class BaseClass1
class BaseClass2
class DerivedClass

输出: 2个“合并的”类实例:

d1 = DerivedClass(BaseClass1)
d2 = DerivedClass(BaseClass2)

0 个答案:

没有答案