Python, faire conditionnelle importations de la bonne façon

Droit maintenant, j'ai une classe appelée A.

J'ai un code comme celui-ci..

from my.package.location.A import A

...


foo = A.doSomething(bar)

Ce qui est excellent.

Mais maintenant j'ai une nouvelle version d'Un appelé, mais dans un autre package, mais je veux seulement utiliser cette autre dans un certain scénario. Si je peux faire quelque chose comme ceci:

if(OldVersion):
    from my.package.location.A import A
else:
    from new.package.location.A import A

...

foo = A.doSomething(bar)

Cela fonctionne bien. Mais qu'il est laid. Comment puis-je faire de mieux? J'ai vraiment envie de faire quelque chose comme ceci

from my.abstraction.layer.AFactory import AFactory
...
myA = AFactory.giveMeA() # this looks at "OldVersion" and gives me the correct A
foo = myA.doSomething(bar)

est-il un moyen que je peux faire plus simple? Sans l'usine couche? Ce peut maintenant transformer chaque appel de la méthode statique sur ma classe en 2 lignes. Je peux toujours contenir une référence à une classe de réduire l'impact, mais je suis vraiment en espérant python a une solution plus simple.

OriginalL'auteur asdasdasd | 2011-07-22