は今、私はA.パイソン、条件付き輸入私はこのようないくつかのコードを持っている
と呼ばれるクラスを持って正しい方法をやって..
from my.package.location.A import A
...
foo = A.doSomething(bar)
は、これは素晴らしいです。
しかし、私はAと呼ばれる新しいバージョンのAを持っていますが、別のパッケージになっていますが、特定のシナリオでこの他のAを使用したいだけです。だから私はこのような何かをすることができます:
if(OldVersion):
from my.package.location.A import A
else:
from new.package.location.A import A
...
foo = A.doSomething(bar)
これはうまくいきます。しかし、それは醜いです。私はこれをより良くするにはどうすればいいですか?私は本当にこのようなことをしたいです
from my.abstraction.layer.AFactory import AFactory
...
myA = AFactory.giveMeA() # this looks at "OldVersion" and gives me the correct A
foo = myA.doSomething(bar)
私はそれを簡単にする方法はありますか?ファクトリーレイヤーがなければ?これで、クラスのすべての静的メソッド呼び出しを2行にすることができます。私はいつも影響を減らすためにクラス内の参照を保持することができますが、実際にはPythonがもっと簡単な解決法を望むことを本当に望んでいます。
これはPythonがちょうど "うまくいく"方法です –