现在我有一个叫A的班级.
我有一些像这样的代码..
from my.package.location.A import A
...
foo = A.doSomething(bar)
Run Code Online (Sandbox Code Playgroud)
这很棒.
但是现在我有一个名为A的新版A,但是在另一个包中,但我只想在某个场景中使用其他A. 所以我可以这样做:
if(OldVersion):
from my.package.location.A import A
else:
from new.package.location.A import A
...
foo = A.doSomething(bar)
Run Code Online (Sandbox Code Playgroud)
这很好用.但它很难看.我怎么能做得更好?我真的想做这样的事情
from my.abstraction.layer.AFactory import AFactory
...
myA = AFactory.giveMeA() # this looks at "OldVersion" and gives me the correct A
foo = myA.doSomething(bar)
Run Code Online (Sandbox Code Playgroud)
有没有办法让我更轻松?没有工厂层?现在,这可以将我的类上的每个静态方法调用转换为2行.我总是可以在类中保留一个引用以减少影响,但我真的希望python有一个更简单的解决方案.