multiple inheritance super()

Peter Hansen peter at engcorp.com
Tue Jul 26 22:09:55 CEST 2005


km wrote:
> Hi all,
> 
> In the following code why am i not able to access class A's object attribute - 'a' ? I wishto extent  class D with all the attributes of its base classes. how do i do that ?
> 
> thanks in advance for enlightment ... 
> 
> here's the snippet 
> 
> #!/usr/bin/python
> 
> class A(object):
>     def __init__(self):
>         self.a = 1
>         
> class B(object):
>     def __init__(self):
>         self.b = 2
> 
> class C(object):
>     def __init__(self):
>        self.c = 3
>        
> class D(B, A, C):
>     def __init__(self):
>         self.d = 4
>         super(D, self).__init__()

Each class should do a similar super() call, with the appropriate name 
substitutions.

Calls to __init__ must be made explicitly in subclasses, including in 
the case of multiple inheritance.

Also note that often (usually) you would like the __init__ call to come 
*before* other location initializations, and it's the safest thing to do 
unless you have clear reasons to the contrary.

-Peter



More information about the Python-list mailing list