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