<p>现在我有一门课叫a</p>
<p>我有这样的代码。。</p>
<pre><code>from my.package.location.A import A
...
foo = A.doSomething(bar)
</code></pre>
<p>这太好了。</p>
<p>但是现在我有了一个新版本的a,叫做a,但是在一个不同的包中,但是我只想在某个场景中使用另一个a。所以我可以这样做:</p>
<pre><code>if(OldVersion):
from my.package.location.A import A
else:
from new.package.location.A import A
...
foo = A.doSomething(bar)
</code></pre>
<p>这很管用。但它很难看。我怎样才能做得更好?我真的想做这样的事</p>
<pre><code>from my.abstraction.layer.AFactory import AFactory
...
myA = AFactory.giveMeA() # this looks at "OldVersion" and gives me the correct A
foo = myA.doSomething(bar)
</code></pre>
<p>有没有办法让我更容易做到?没有工厂层?这现在可以将类上的每个静态方法调用转换为两行。我总是可以在类中保存一个引用来减少影响,但我真的希望python有一个更简单的解决方案。</p>