Newbie: Inheritance of accessors
Henrik Weber
Henrik.Weber at sys.aok.de
Wed Oct 16 04:35:51 EDT 2002
[...]
> I guess I should have been clearer. I meant reading the inherited
> *default* value from the parent class. Given the same code (repeated
> below), I see:
>
> >>> q = R()
> >>> print q.x
> 0
> >>> e = S()
> >>> print e.x
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> File "<stdin>", line 5, in getx
> AttributeError: 'S' object has no attribute '_R__x'
> >>>
>
> Can e *not* inherit to the default value? Or is there a way to call the
> __init__ method for R's superclass (so that 'x' in initialized?).
>
> WF
The latter. Since your class R is a new style class (inherited from
object), you can write your class S this way:
class S(R):
def __init__(self):
super(S, self).__init__()
self.__y = 0
...
If you use an old style class (not inherited from object), you would
have had to write:
class S(R):
def __init__(self):
R.__init__(self)
self.__y = 0
...
Details about the super() function and new style classes can be found
in the "What's new" document for Python 2.2.
-- Henrik Weber
More information about the Python-list
mailing list