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
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
Bwon’t be imported until you instantiate classA, by which time the module already has been imported fully by moduleb.You can also use a common base class and test for that.