On Tue, May 12, 2009 at 9:05 AM, The Green Tea Leaf < thegreenteal...@gmail.com> wrote:
> Hi, > I've started to learn Python and I'm a bit confused over how to call a > method in a parent class. Assume I have: > > class Parent(object): > def somemethod( self, bla ): > print 'Parent',bla > > I then create a child class that want to call somemethod. As I > understand it I can either do it like this > > class Child(Parent): > def somemethod( self, bla ): > Parent.somemethod(self,bla) > > or like this > > class Child(Parent): > def somemethod( self, bla ): > super(Child,self).somemethod(bla) > > The first version seem to have the obvious disadvantage that I need to > know the name of the parent class when I write the call, so I thought > that the second version was the "proper" way of doing it. But when > doing some research on the web it seem like the second version also > have some problems. > > My question is simple: what is the "best" way of doing this and why? > Or should I mix both these approaches? > > -- > Assuming you don't have the same method in Child, just use self.somemethod: In [2]: class Parent(object): ...: def foo(self): ...: print "in parent foo" ...: In [3]: class Child(Parent): ...: pass ...: In [4]: x = Child() In [5]: x.foo Out[5]: <bound method Child.foo of <__main__.Child object at 0x999252c>> In [6]: x.foo() in parent foo In [7]: class Child(Parent): ...: def bar(self): ...: self.foo() ...: print "in child bar" ...: In [8]: x = Child() In [9]: x.bar() in parent foo in child bar
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor