Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #80981
| From | "Charles T. Smith" <cts.private.yahoo@gmail.com> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Re: caught in the import web again |
| Date | 2014-11-17 20:07 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <m4dki7$fn6$1@dont-email.me> (permalink) |
| References | <m48lfh$n88$1@dont-email.me> <mailman.15871.1416122062.18130.python-list@python.org> <m49omd$924$1@dont-email.me> <mailman.15947.1416208135.18130.python-list@python.org> |
On Mon, 17 Nov 2014 08:08:40 +0100, dieter wrote: > "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). Well, I guess that's the definitive answer... the tips for delaying import are good, I'll try to leverage them. I was hoping there would be a way to have python postpone evaluation similar to C's forward references.
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