Python, правильно выполняет условный импорт

Прямо сейчас у меня есть класс под названием 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 есть более простое решение.

8
задан asdasdasd 22 July 2011 в 17:25
поделиться