サードパーティのモジュールのクラスXからいくつかの機能が必要です。私はm.Xを直接使用することができますが、m.Xを将来別のクラスn.Yに置き換える必要があるかもしれません(例えば、より良い実装が見つかった場合など)。python:サードパーティのクラスにラッパーを書く
このような状況では、残りのコードを変更しないでください。
今のところ、m.Xの完全なインターフェイス(初期化を含む)を変更しないで渡したいと思います。 、将来的には
class W(m.X):
def __init__(self, *args):
super().__init__(*args)
必要が生じれば、私は上記のように書き換えることを計画:次のように私はm.XのラッパーWを書いた
class W(n.Y):
def __init__(self, *args):
super().__init__(*args)
# override instance methods of n.Y that don't share the semantics with m.X
# for example, in case f1 is hard to replicate in n.Y:
# def f1(self, *args):
# print("this method is no longer available")
# raise MyDeprecatedMethod()
# for example, in case f2 needs to be recalculated
# def f2(self, *args):
# do the calculations required to keep W.f2 unchanged
が許容m.Xのための私の現在のラッパーですか?それに問題があるか、またはn.Yの計画ラッパーに問題がありますか?
私によく見えます(少なくとも、これは私がやる方法です) –
どのくらいの包装が本当に必要ですか?唯一の問題が残りのコードをネーミングの潜在的な変更から保護しているならば、単純に 'W = m.X'で十分でしょうか? –