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