私は多くのクラスを持っており、さまざまなサイトのいくつかの一般的なタスクを実現しています:
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() デコレーターは機能しており、機能に問題はありません (その本体は私の質問とは関係がないため、提供していません)。
ソースコードで数十の異なるクラスの装飾をハードコーディングすることは最善の考えではなく、標準的な解決策を探していると思います。