Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #80961
| From | dieter <dieter@handshake.de> |
|---|---|
| Subject | Re: caught in the import web again |
| Date | 2014-11-17 08:08 +0100 |
| References | <m48lfh$n88$1@dont-email.me> <mailman.15871.1416122062.18130.python-list@python.org> <m49omd$924$1@dont-email.me> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.15947.1416208135.18130.python-list@python.org> (permalink) |
"Charles T. Smith" <cts.private.yahoo@gmail.com> writes:
> ...
> Are others equally frustrated by this or is there a trick or principle
> that I'm missing. At this point, I guess the way I'll have to proceed is
> to put every class in its own file, no matter how small. Hopefully that
> takes care of the problem.
Recursive imports are inherently difficult. It is best if
a careful design avoids it (note that a cycle free dependency
structure is much easier to handle than a cyclic one -- not only
for Python).
If you think such a cycle free module structure is impossible
in your case, then try to delay module related operations:
* consider local imports (imports inside a function).
They delay the import until the function is called rather
than execute it at module import time.
* prefer "import <module>" over "from <module> import ..."
This may delay the module access; perhaps (but not
necessarily) sufficiently such that the accessed object
is already defined.
Neither of these approaches is complete - you may still get
cyclic import dependencies and related problems. Usually, you
need a careful module dependency design to avoid cyclic dependencies
altogether.
> I compared perl's object-oriented philosophy with python's and didn't
> like how perl *requires* you to put everything into its own file. Now it
> looks like python does, too, implicitly.
If you put everything in a single file, then you do not get
recursive imports (but you may still have other problems related to
cyclic dependencies). Thus, Python's difficulties with recursive
imports do not force you to "put everything in its own file".
If you think about it, you will recognize that cyclic dependencies are
inherently difficult (e.g. "chicken - egg" type problems)
and that the way Python handles cyclic
import dependencies is rather natural (and understandable).
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
caught in the import web again "Charles T. Smith" <cts.private.yahoo@gmail.com> - 2014-11-15 22:52 +0000
Re: caught in the import web again Ben Finney <ben+python@benfinney.id.au> - 2014-11-16 10:43 +1100
Re: caught in the import web again Denis McMahon <denismfmcmahon@gmail.com> - 2014-11-16 01:11 +0000
Re: caught in the import web again dieter <dieter@handshake.de> - 2014-11-16 08:14 +0100
Re: caught in the import web again "Charles T. Smith" <cts.private.yahoo@gmail.com> - 2014-11-16 08:53 +0000
Re: caught in the import web again Chris Angelico <rosuav@gmail.com> - 2014-11-16 20:20 +1100
Re: caught in the import web again dieter <dieter@handshake.de> - 2014-11-17 08:08 +0100
Re: caught in the import web again "Charles T. Smith" <cts.private.yahoo@gmail.com> - 2014-11-17 20:07 +0000
Re: caught in the import web again Dave Angel <davea@davea.name> - 2014-11-17 17:17 -0500
Re: caught in the import web again Ian Kelly <ian.g.kelly@gmail.com> - 2014-11-17 15:52 -0700
Re: caught in the import web again Dave Angel <davea@davea.name> - 2014-11-17 20:20 -0500
Re: caught in the import web again Ian Kelly <ian.g.kelly@gmail.com> - 2014-11-18 08:28 -0700
Re: caught in the import web again Dave Angel <davea@davea.name> - 2014-11-18 14:09 -0500
Re: caught in the import web again Chris Angelico <rosuav@gmail.com> - 2014-11-19 07:18 +1100
Re: caught in the import web again Dave Angel <davea@davea.name> - 2014-11-18 17:58 -0500
Re: caught in the import web again Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-11-18 09:45 +1100
Re: caught in the import web again Rick Johnson <rantingrickjohnson@gmail.com> - 2014-11-17 18:17 -0800
Re: caught in the import web again Chris Angelico <rosuav@gmail.com> - 2014-11-18 13:25 +1100
Re: caught in the import web again Steven D'Aprano <steve@pearwood.info> - 2014-11-18 07:13 +0000
Re: caught in the import web again Michael Torrie <torriem@gmail.com> - 2014-11-18 00:00 -0700
Re: caught in the import web again "Charles T. Smith" <cts.private.yahoo@gmail.com> - 2014-11-18 09:13 +0000
csiph-web