On Dec 7, 10:52 am, gst <g.sta...@gmail.com> wrote: > Hi, > > I met a situation where I was passing an object created in/with an > upper level module class to a lower level module class' instance in > one of its __init__ argument and saving a ref of the upper object in > that lower level class' new instance. > > But in my IDE I want the completion to also work from within the lower > level module when it's refering to the object passed from the upper > level: > > Well, I'm sure I'm not very clear in my terms (and probably a bit long > in the sentence) so here it is in code: > > files: > module1.py > subpackage/module2.py > > file module1.py: > > from subpackage.module2 import class2 > > class class1(object): > > def __new__(cls, _self=None, *args, **kwargs): > if _self: ## we've been passed an instance already > initialyzed > ## so directly return it instead of creating a > new object. > return _self > return object.__new__(cls) > > def __init__(self, _self=None, *args, **kwargs): > if _self: ## we've been passed an instance already > initialyzed > ## so directly returns > ## assert(self is _self) ? > return > self.object2 = class2(object1=self, "blip", "blop") > # others init > > file module2.py: > > class class2(object): > > def __init__(self, object1, *args, **kwargs): > > from ..module1 import class1 > > self.object1 = class1(_self=object1) ## instead of: > self.object1 = object1 > > ## others functions and/or init.. > ## where now I've completion working on self.object1 : > ## if I add(or remove) fields/methods in module1 (and save) then > ## I have them available(or disappeared) in the completion when > executed from this submodule. > ## This ofcourse permits to save me of remembering all of the > class1 attributes/methods when I'm working with self.object1 from > within one of class2 methods. > > What do you think of this ? > > I guess there can be others ways of doing this.. ? > > Thanks, > > Regards, > > Greg. > > note: I'm using Eclipse 3.5.2 with pydev so (I don't really know how > others IDE can handle this case) .
You might want to test with Wing IDE http://wingware.com/ using the 10 day trial version to see if that works just for kicks. I've heard it has the best autocomplete of all IDEs out there. -- http://mail.python.org/mailman/listinfo/python-list