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.)
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With