"Ben Finney" <ben+pyt...@benfinney.id.au> wrote in message news:87aahh6401....@benfinney.id.au...
"Frank Millman" <fr...@chagford.com> writes:

Assume the following structure -

main.py
/pkg
   __init__.py
   mod1.py
   mod2.py

main.py
   from pkg import mod1

mod1.py
   import mod2

mod2.py
 import mod1

What are you expecting the result to be?


Simply that mod1 can refer to objects in mod2, and mod2 can refer to objects in mod1.

If it's about sharing objects between the modules, why not break the
circular dependency: factor out the common code to a module that both
the others import?

Any comments or suggestions will be appreciated.

Special cases aren't special enough to break the rules. If you think you
have a practical reason to do so, it would be best to make it explicit
when asking for help about this.


I am trying to understand what 'the rule' is. Your advice above suggests that you are one of those who recommend that circular imports are best avoided altogether. In an ideal world I would agree. However, the fact is that, no doubt due to a mental block I have, I do find myself in this situation from time to time, and I have not seen anything in the documentation or other literature that says it is absolutely wrong. Therefore, while I do try to avoid circular imports where possible, I would also like to know how to manage it in situations where I don't see a simple alternative.

From everything I have read about how the import mechanism works, I don't
understand *why* the above construct fails. That is actually what I am asking for help with.

Thanks

Frank


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to