Import subclass from a base class in Python
I have a base class that has a method that creates an instance of a subclass that is called the same as the input string.
This worked before by putting the subclasses and the base class in the same file, and doing something like globals()[name].
Now, however, I've split up the subclasses into other files. They each have an import base statement at the top, so I can't just simply import the subclasses in my base class or there'll be a chain of circular importing.
Is there any workaround for this?
from basefactory import BaseFactory class Base: def __init__(self, arg1, arg2): ... def resolve(self, element): className = typing.getClassName(element) return BaseFactory.getInstance(className, element, self)
from file1 import * from file2 import * ... class BaseFactory: @staticmethod def getInstance(name, arg1, arg2): subclass = globals()[name] return subclass(arg1, arg2)
from base import Base class subclass1(Base): def foo(self): return self.arg1
You can move the import statement that is failing to the method that creates the subclass object.