On 07/04/2013 08:48 AM, kanchan.n.maha...@gmail.com wrote:
On Tuesday, April 8, 2008 10:06:46 PM UTC+2, Torsten Bronger wrote:
Hallöchen!
I have a rather fat module that represents a document parser --
inline elements, block elements, and the like. Now I want to split
it into many modules to make everything more manageable.
But at the moment I don't see how to avoid cyclic imports: A
document element A, which is represented my module parser.A, may
contain the element B, as defined in parser.B. And vice versa. So
both modules must import each other, as far as I can see.
I know that cyclic imports work in Python under certain
circumstances. Can anyone refer me to a page which explains *when*
this works? Because at least once, the imported module was not
"finished" and thus largely unusual.
Thank you!
Tschö,
Torsten.
If you do "import foo" inside bar and "import bar" inside foo, it will work
fine. By the time anything actually runs, both modules will be fully loaded and will have
references to each other.
The problem is when instead you do "from foo import abc" and "from bar import
xyz". Because now each module requires the other module to already be compiled (so that the
name we are importing exists) before it can be compiled.
from
http://stackoverflow.com/questions/744373/circular-or-cyclic-imports-in-python
That's a nice looking oversimplification. But it's not true if
top-level code in the second module to be imported tries to use symbols
defined in the first module. And it's definitely bad practice, with
weird bugs if either one of these files is the main script being loaded.
--
DaveA
--
http://mail.python.org/mailman/listinfo/python-list