Inheritance and forward references (prototypes)

Dave Angel davea at ieee.org
Sat Jun 20 14:43:32 EDT 2009


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.





More information about the Python-list mailing list