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
The
__init__
method executes when you create an instance of the class. In this case, you should get it to work by simply changing the import statements like this: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
B
won'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.
Just import classes in
__init__
method