如何在python中使用子类的方法调用第二个父类的方法?
问题描述:
下面是我的代码:如何在python中使用子类的方法调用第二个父类的方法?
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()
。条件仅应建立子类对象,并在子类中声明没有变化
答
Parent2.method(self)
这就是你所需要的(class Child(Parent1,Parent2):
不应该改变。) - 的instance.method()
是ClassName.method(instance)
只是语法糖,因此,所有你需要做的是没有语法糖,它会做的很好。
我改变了Child
类这样的:
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 ***
你得到预期的输出完美的罚款。
你也可以将'super(Child,self).method()'改为'Parent1.method(self)'。这个类层次结构不是为了正确使用'super'而设计的。 – chepner
@詹姆斯:感谢您的解决方案。这是唯一的方法吗?有没有其他方法?不能用super()或decorator来完成吗? –
@Praveenkumar我并不知道其中之一,但我绝不是Python继承方面的专家,可能有一些我不知道的方法。 – James