如何在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 ***