Ahora mismo tengo una clase llamada A.Python, haciendo las importaciones condicionales de la manera correcta
tengo algo de código como este ..
from my.package.location.A import A
...
foo = A.doSomething(bar)
Esto es grande.
Pero ahora tengo una nueva versión de un llamado A, pero en un paquete diferente, pero yo sólo quiero usar este otro A en un determinado escenario. Entonces puedo hacer algo como esto:
if(OldVersion):
from my.package.location.A import A
else:
from new.package.location.A import A
...
foo = A.doSomething(bar)
Esto funciona bien. Pero es feo ¿Cómo puedo hacer esto mejor? Realmente quiero hacer algo como esto
from my.abstraction.layer.AFactory import AFactory
...
myA = AFactory.giveMeA() # this looks at "OldVersion" and gives me the correct A
foo = myA.doSomething(bar)
¿Hay alguna manera de que pueda hacer eso más fácil? Sin la capa de fábrica? Esto ahora puede convertir cada llamada de método estático en mi clase en 2 líneas. Siempre puedo mantener una referencia en una clase para reducir el impacto, pero realmente espero que Python tenga una solución más simple.
Así es exactamente como Python "simplemente funciona" :) –