0

我有一个类结构

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

AB提供功能,该类C通过一些包装器收集和丰富。现在碰巧我需要一个类似的类C2,它派生自不同的实现A2而不是A:class C2(A2, B)具有相同的method3.

您将如何实现这样的设计(C可以从不同的实现类派生)?

如果它与高级 Python 编程(元类?)有关,将不胜感激:)

4

1 回答 1

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)
于 2012-06-20T19:32:37.460 回答