5

私は多くのクラスを持っており、さまざまなサイトのいくつかの一般的なタスクを実現しています:

class AbstractCalculator :
         pass # ... abstract methods lying here

class Realization1 (AbstractCalculator) :

    @classmethod
    def calculate_foo(...) :
        # ...

    @classmethod
    def calculate_bar(...) :
        # ...



class Realization2 (AbstractCalculator) :

    @classmethod
    def calculate_foo(...) :
        # ...

    @classmethod
    def calculate_bar(...) :
        # ...

次に、これらすべてのクラスを 1 つの辞書に集約します。次に、新しい異なる API を紹介します。

class NewAbstractClass :

    # ... introducting new API ...

    @staticmethod
    def adopt(old_class) :
         # .. converting AbstractClass to NewAbstactClass

そして、@decorator のような adapt() メソッドを使用して、すべての古い実現を新しいものに変換します。

しかし、それはすべて非常に奇妙で複雑です。これを行うより良い方法はありますか?

UPD @ColinMcGrath :

いいえ、私は間違いなく他のものを求めています。

私の adapt() デコレーターは機能しており、機能に問題はありません (その本体は私の質問とは関係がないため、提供していません)。

ソースコードで数十の異なるクラスの装飾をハードコーディングすることは最善の考えではなく、標準的な解決策を探していると思います。

4

1 に答える 1