Calling private base methods

Jorgen Bodde jorgen.maillist at gmail.com
Thu Apr 12 04:47:57 EDT 2007


Hi All,

Now that I am really diving into Python, I encounter a lot of things
that us newbies find difficult to get right. I thought I understood
how super() worked, but with 'private' members it does not seem to
work. For example;

>>> class A(object):
...     def __baseMethod(self):
...             print 'Test'

Deriving from A, and doing;

>>> class D(A):
...     def someMethod(self):
...             super(A, self).__baseMethod()
...             print 'test3'

Will not work;

>>> p = D()
>>> p.someMethod()
Traceback (most recent call last):
 File "<interactive input>", line 1, in <module>
 File "<interactive input>", line 3, in someMethod
AttributeError: 'super' object has no attribute '_D__baseMethod'

Is it possible to call a private base method? I come from a C++
background, and I liked this construction as my base class has helper
methods so that I do not have to  duplicate code.

When I do;

>>> class E(object):
...     def someMethod(self):
...             print 'Hello'
...
>>> class F(E):
...     def otherMethod(self):
...             super(F, self).someMethod()
...             print 'There'
...
>>> p = F()
>>> p.otherMethod()
Hello
There
>>>

This seems to work.

Thanks in advance,
- Jorgen



More information about the Python-list mailing list