Resolve circular import error in python
class, python, python-import
Solution
Apart from "don't do that, you are painting yourself into a corner", you could also postpone the import of B until you need it. File `a.py`:
class A:
def __init__(self, ref):
from b import B
assert isinstance(ref, B)
self.ref = ref
Class `B` won't be imported until you instantiate class `A`, by which time the module already has been imported fully by module `b`.
You can also use a common base class and test for that.
Problem
Possible Duplicate: Circular (or cyclic) imports in Python I have class B that imports and creates instances of class A. Class A needs reference to B in its contructor and so includes B. ``` from a import A class B: def __init__(self): self.a = A() ``` ``` from b import B class A: def __init__(self, ref): assert isinstance(ref, B) self.ref = ref ``` This doesn't work. The main file imports B and uses it... not. Something with the imports is wrong. Error from file a ImportError: cannot import name B