less obvious "super"
Duncan Booth
duncan.booth at invalid.invalid
Mon Sep 10 07:20:52 EDT 2007
Nagarajan <naga86 at gmail.com> wrote:
> Here is what I need to achieve..
>
> class A :
> def __init__( self ):
> self.x = 0
Don't use old style classes. If you are planning to use 'super' then you
must use new-style classes, so use 'object' as a base class here.
>
> class B ( A ):
> def __init__( self, something ):
> # Use "super" construct here so that I can "inherit" x of A
> self.y = something
>
> How should I use "super" so that I could access the variable "x" of A
> in B?
>
If you aren't worried about diamond shaped multiple inheritance
hierarchies then just use:
class B ( A ):
def __init__( self, something ):
A.__init__(self)
self.y = something
If you are then:
class B ( A ):
def __init__( self, something ):
super(B, self).__init__()
self.y = something
When you use super you usually just want the current class and current
instance as parameters. Putting that together:
>>> class A(object):
def __init__( self ):
self.x = 0
>>> class B ( A ):
def __init__( self, something ):
super(B, self).__init__()
self.y = something
>>> obj = B(3)
>>> obj.x
0
>>> obj.y
3
>>>
More information about the Python-list
mailing list