Arg, forgot to post to the mailing list again. -_- On a smaller issue, don't you need to do:
class DebugA(BaseA): def __init__(self): BaseA.__init__(self) return As in, explicitly call the __init__ function when you initalise DebugA, since DebugA extends BaseA? I'm just getting this "necessary" step because my books say so. If anyone has a good explanation, please do tell. Best regards, Ching-Yun "Xavier" Ho, Technical Artist Contact Information Mobile: (+61) 04 3335 4748 Skype ID: SpaXe85 Email: cont...@xavierho.com Website: http://xavierho.com/ On Sun, Jun 21, 2009 at 6:26 AM, Lorenzo Di Gregorio < lorenzo.digrego...@gmail.com> wrote: > On Jun 20, 8:43 pm, Dave Angel <da...@ieee.org> wrote: > > Lorenzo Di Gregorio wrote: > > > Hi, > > > > > I'm wondering what would be the preferred way to solve the following > > > forward reference problem: > > > > > --------------------------------------- > > > class BaseA(object): > > > def __init__(self): > > > return > > > > > class DebugA(BaseA): > > > def __init__(self): > > > return > > > > > # here I would have a prototype of class A which is the same as class > > > BaseA > > > > > class B(object): > > > def __init__(self): > > > self.obj = A() > > > return > > > > > if __name__ == "__main__": > > > # class A(BaseA): # Uncomment this for using BaseA objects > > > # pass > > > class A(DebugA): # Uncomment this for using DebugA objects > > > pass > > > --------------------------------------- > > > > > I can figure out some ways to fix this but none seems satisfying. > > > Either they are too specific or too cumbersome. > > > A runtime redefinition of class A does not seem to work either. > > > What would be the most "pythonesque" solution other than sorting out > > > the class order? > > > > > Best Regards, > > > Lorenzo > > > > You haven't shown us any problem. class B works fine with a forward > > reference to A. Now if you were trying to subclass A before defining > > it, that'd be a problem. Or if you were trying to make an instance of B > > before defining A. > > > > Better put some code together with enough meat to actually show a > > symptom. And tell us what sys.version says. I'm testing with 2.6.2 > > (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)], running > > on Win XP.- Hide quoted text - > > > > - Show quoted text - > > Thank you for your help: I'm working on a rather large source, but I > think I have isolated the problem now. > This listing generates an error: > > ----------------------------------------------- > class BaseA(object): > def __init__(self): > return > > class DebugA(BaseA): > def __init__(self): > return > > class B(object): > def __init__(self,test=A()): > self.obj = A() > return > > if __name__ == "__main__": > # class A(BaseA): # Uncomment this for using BaseA objects > # pass > class A(DebugA): # Uncomment this for using DebugA objects > pass > ----------------------------------------------- > > The error happens because Python apparently evaluates the named > arguments before running the script. > I think I have read something about this some (long) time ago but I > can't find it anymore. > > Suggestions? > > BTW, my Python version is 2.6.1 (with latest PyDev). > > Thx! > Lorenzo > -- > http://mail.python.org/mailman/listinfo/python-list >
-- http://mail.python.org/mailman/listinfo/python-list