如何在python中使用子类的方法调用第二个父类的方法?

如何在python中使用子类的方法调用第二个父类的方法?,python,python-2.7,python-3.x,ipython,multiple-inheritance,Python,Python 2.7,Python 3.x,Ipython,Multiple Inheritance,下面是我的代码: 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 "!!

下面是我的代码:

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()
我想使用子类的对象调用
Parent2
类的
method()
。条件是只应创建子类对象,并且子类声明中不应更改(
类子类(Parent1,Parent2):
不应更改。)

这就是您所需要的一切,
instance.method()
只是
ClassName.method(instance)
的语法糖,所以您所需要做的就是调用它,而不使用语法糖,这样就可以了

我将
子类更改为:

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)
以及:


您可以很好地获得预期的输出。

您还可以将
super(Child,self).method()
更改为
Parent1.method(self)
。这个类层次结构不是为正确使用
super
而设计的。@James:谢谢你的解决方案。这是唯一的办法吗?还有别的办法吗?不能用super()或decorator完成吗?@Praveenkumar我不知道,但我绝对不是Python继承方面的专家,可能有某种方式我不知道。谢谢@James提供的解决方案。@James。是的,我会。:)
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)
# Out:
$ python c.py
!!! ___initialization Child___ !!!
*** method of Parent1 is called ***
*** method of Child is called ***
*** method of Parent2 is called ***