Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to call method of second parent class using method of child class in python?

Below is my code:

class Parent1(object):
    def __init__(self):
        print "!!! ___initialization Parent1___ !!!"

    def method(self):
        print "*** method of Parent1 is called ***"


class Parent2(object):
    def __init__(self):
        print "!!! ___initialization Parent2___ !!!"

    def method(self):
        print "*** method of Parent2 is called ***"

class Child(Parent1,Parent2):
    def __init__(self):
        print "!!! ___initialization Child___ !!!"

    def method(self):
        super(Child,self).method()
        print "*** method of Child is called ***"


Ch = Child()
Ch.method()

I want to call method() of Parent2 class using object of child class. Conditions are only child class object should be created and no change in child class declaration (class Child(Parent1,Parent2): should not changed.)

like image 688
Praveen kumar Avatar asked Oct 29 '25 10:10

Praveen kumar


1 Answers

Parent2.method(self)

That's all you need - the instance.method() is just syntactic sugar for ClassName.method(instance), so all you need to do is call it without the syntactic sugar and it'll do fine.

I changed the Child class to this:

class Child(Parent1,Parent2):
    def __init__(self):
        print "!!! ___initialization Child___ !!!"

    def method(self):
        super(Child,self).method()
        print "*** method of Child is called ***"
        Parent2.method(self)

And:

# Out:
$ python c.py
!!! ___initialization Child___ !!!
*** method of Parent1 is called ***
*** method of Child is called ***
*** method of Parent2 is called ***

You get the expected output perfectly fine.

like image 152
James Avatar answered Oct 31 '25 01:10

James