Override method name and original method access

Chris Mellon arkanes at gmail.com
Mon Nov 12 20:56:23 CET 2007


On Nov 12, 2007 1:41 PM, Donn Ingle <donn.ingle at gmail.com> wrote:
> In an unusual twist of code I have a subclass which overrides a method but
> it also needs to call the original method:
>
> class One:
>  def add (self, stuff):
>   self.stuff.append(stuff)
>
> class Two(One):
>  def __init__(self, otherstuff):
>   <MYSTERY>(otherstuff) #otherstuff must go into list within the parent.
>  #The override - totally different function in this context.
>  def add (self, data):
>   self.unrelated.append (data)
>
> For:
> <MYSTERY>
> I have tried:
>  self.One.add( otherstuff )
> No go.
>  super ( Two, self).add( otherstuff )
> Gives this error:TypeError: super() argument 1 must be type, not classobj
> (Which reminds me, how the heck does super work? I always get that error!)
>

You need to be a new-style class (that is, you must inherit from
object) for super() to work. Other than that, you are using it
correctly here.

> I could just change the method name to adddata() or something. I could pass
> parent references around, but want to avoid that.
>
> I thought I'd ask about it here.
>
> \d
>
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>



More information about the Python-list mailing list