我的目标:
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)