class classA:
def common(self):
print('A')
class classB:
def common(self):
print('B')
class classC:
def workflow(self):
print('Do something')
self.common()
print('Do something else')
A = classC() # Here I want to create classC that inherits from classA
A.workflow()
assert isinstance(A, classA)
B = classC() # Here I want to create classC that inherits from classB
B.workflow()
assert isinstance(B, classB)
在此示例中,我有classA
和classB
都实现了功能common()
,该功能输出不同的值。我想让classC
从这些类之一中继承,这样workflow()
的行为会略有不同,具体取决于它继承的common()
方法。这样做的主要目的是拥有一种workflow()
方法,其中self.common()
的结果根据继承而变化。
实例化classC
时如何选择从classC
继承的类?
答案 0 :(得分:0)
您不能为单个对象选择其他父类; classes 处理继承。也就是说,您可以根据需要直接使用type
创建一个 new 类。您不会直接使用classC
,而是从classC
以及classA
和classB
的适当一个继承的子类,将两者视为混合课程。
a = type("pick-a-name", (classC, classA), {})()
b = type("pick-a-name", (classC, classB), {})()
您会注意到这里有一个额外的开销,因为每次尝试实例化一个对象时,都必须首先创建一个新类。你还不如 立即定义子类。
class Ca(classC, classA):
pass
class Cb(classC, classB):
pass