我有类似
的类结构class A:
def method1(self):
return 1
class B:
def method2(self):
return 2
class C(A,B):
def method3(self):
return self.method1()+self.method2()
类A
和B
提供了类C
通过一些包装器收集和丰富的功能。现在碰巧我需要一个类似的类C2
,它来自不同的实现A2
而不是A
:class C2(A2, B)
具有相同的method3
。
您如何实现这样的设计(C
可以从不同的实现类派生出来?)
如果它与高级Python编程(元类?)有关,那么可以赞赏一个例子:)
答案 0 :(得分:4)
class CMixin:
def method3(self):
return self.method1()+self.method2()
class C1(A,B, CMixin):
pass
class C2(A2,B, CMixin):
pass
虽然您描述的设计听起来像是要聚合而不是:
class C:
def __init__(self, a, b):
self.a = a
self.b = b
def method3(self):
return self.a.method1() + self.b.method2()
c1 = C(a1, b)
c2 = C(a2, b)