How to inheritance overwrite non virtual?
Peter Otten
__peter__ at web.de
Thu Sep 18 11:53:35 EDT 2003
Axel Straschil wrote:
> Hi!
>
>> The following will do:
>>
>> class Derived(Base):
>> def method(self):
>> return Base.method(self) # call base class method
>
> I tried in my chield-class:
> class K2(KObject):
> def bestCaption(self):
> return "Overwritten"
> def bestCaptionlong(self):
> return KObject.bestCaptionlong(self)
>
> The Problem ist inside of KObject.bestCaptionlong(self):
> return self.bestCaption()
>
> The mother-class is calling the method of the child-class, not
> it own method. I want the mother-method to be called like "the
> chield never was existing", but I find no way.
>
> Anny other idea?
>
> Thank, AXEL.
What you want seems to be
class KObject:
def bestCaptionlong(self):
# class made explicit to guard against overriding
return KObject.bestCaption(self)
Some additional remarks:
Do-nothing accessor methods may be acceptable style in C++ but are
superfluous in Python.
The abundance of xxxCaption and label attributes somewhat obscures your
design goal for me, but usually the ability to override a method to change
its effect is a feature, not something to fight against.
Peter
Peter
More information about the Python-list
mailing list