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

クラスAとは、クラスが収集していくつかのラッパーで強化Bする機能を提供します。代わりに、別の実装から派生しCた同様のクラスが必要になることがあります。C2A2Aclass 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 に答える