[EMAIL PROTECTED] wrote: > Hi, > > I am new to python and am currently writing my first application. One > of the problems I quickly ran into, however, is that python's imports > are very different from php/C++ includes in the sense that they > completely wrap the imported script in a module object. One of the > problems with this was that a plugin system that I am making requires > use of objects, classes and the such from the original script. Thus, on > one hand, I am hesitant to use execfile(), since I *do* want to wrap > the plugin up, but on the other hand, I want the plugin to be able to > use functions from the original script. Any ideas? >
you can import __main__ in your module: import __main__; __main__.app_xfunc(y) But for most cases I'd say your "problem" is an indication of weak design (thanks to Pythons clear module tech). Maybe: * if the funcs are tools, put them in an extra module * if its about app-global parameters(tools), make a module "myglob" or so * if the funcs have app-context, hand over/set them as "callback" functions or iterators like .. def app_xfunc(par):pass mody.set_xhandler(app_xfunc) mody.yfunc(a,b,..., cbProgress=app_xfunc) def app_xstepper(): yield next mody.yfunc2(a,b,..., step=app_xstepper) ... * if you have 2 moduls on equal dependency level and each needs the other (sometimes) - thus you don't want to have one big module, then cross import them .. #modx import mody def fx(): mody.doy() #mody import modx def fy(): modx.dox() Python allows everything most easy for that kind of problems of all langs I know of. Mainly the fact that a module is a real object in Python provides tremendous flexibility and self-similarity of techniques. Ruby for example is weired - even really bad - in this. -robert -- http://mail.python.org/mailman/listinfo/python-list