[Tutor] module Cyclic references
Martin v. Loewis
martin at v.loewis.de
Sun Jan 6 21:31:13 CET 2002
"Andy W" <toodles at yifan.net> writes:
> > This sequence works just fine!
> > >>> import price
> > >>> import movie
> > >>> import cust
> > >>> import test
> Umm this sounds too simple to be true, but is there a typo or something?
No, that is well possible. Consider the modules
from movie import Movie
self.price = price.DEFAULT_PRICE
Then, 'import price' will put price into sys.modules, and start
That does 'from movie import Movie', so movie is added to sys.modules,
and execution of movie.py starts. That does 'import price', so it gets
the existing module from sys.modules (which is still incomplete). It
continues defining Movie, then movie.py is done.
Next, the "from ..." looks for movie.Movie, finds it, and adds it to
price.__dict__, so 'import price' is also done.
The next 'import movie' is mostly a no-op: movie is retrieved from
sys.modules, and added to __main__.__dict__.
More information about the Python-list