A startup puzzle
gandreas at no.reply
Mon Sep 29 21:16:12 CEST 2003
In article <vngnif6v8ip4c6 at corp.supernews.com>,
"Edward K. Ream" <edreamleo at charter.net> wrote:
> I've just about convinced myself there is no good, clean solution to the
> following puzzle. I wonder if you agree.
> For example, doing the following at the top of leoGlobals doesn't work:
> import leoApp
> app = leoApp.leoApp() # construct the app instance.
> Indeed, the leoApp module will be imported before the assignment of app.
> Moreover, the leoApp module does other imports, and all the app variables in
> those modules will be uninitialized.
> It would be horrible style to place detailed constraints on the order in
> which modules get imported, and I'm not sure even that would work.
> Any ideas for a clean solution? Thanks.
Maybe I'm missing something, but it seems like you want some sort of
lazy initialization thing here. Perhaps using a proxy object sort of
like this might work:
realApp = None
if not realApp:
realApp = leoApp.leoApp()
return getattr(realApp, attr)
app = LeoProxy()
Then you can import that module as often as you want, but the first time
you do something with leoApp.app (i.e., "leoApp.app.doSomething()"), it
will only then call the "real" function to create it (and then proxy it
over as needed)
More information about the Python-list