Python:多重继承问题
我对python中的继承问题有点困惑。Python:多重继承问题,python,inheritance,Python,Inheritance,我对python中的继承问题有点困惑。 我知道下面的例子很“愚蠢”,但我简化了我最初的问题。 假设我们有3节课 class testT(object): def check(self, str): return "t" in str class testTE(testT): def check(self, str): return "e" in str class testTES(testTE): def check(self, str):
我知道下面的例子很“愚蠢”,但我简化了我最初的问题。
假设我们有3节课
class testT(object):
def check(self, str):
return "t" in str
class testTE(testT):
def check(self, str):
return "e" in str
class testTES(testTE):
def check(self, str):
return "s" in str
我想要一个输出,比如:
>>> print testTES().check("test")
>>> True (Because string "test" contains "s","e" and "t" characters)
>>> print testTES().check("dog")
>>> False
>>> print testTES().check("dogs")
>>> False (Contains a "s" but no "e" and no "t")
>>> print testTE().check("tuple")
>>> True (Contains "e" and "t")
如何实现此行为?我尝试使用“super”,但我的方法没有成功。感谢您的帮助您只需将子类中的
check
调用与super(…)的输出结合起来即可。check()
:
只需将子类中的
check
调用与super(…)的输出结合起来即可。check()
:
注意OP似乎在使用Python 2,因此在这种情况下,
super
和print
会略有不同。@jdehesa我修复了对super
的调用,在这种情况下,print(…)
worksNote OP似乎在使用Python 2,因此,在这种情况下,super
和print
将略有不同。@jdehesa我修复了对super
的调用,在这种情况下,print(…)
仅作为注释工作,请注意,这不是我们所知道的。在这里,每个类都有一个父类,因此它是单继承(即使继承层次结构有多个级别)。当一个类同时有多个父类时,就会发生多重继承,这会导致诸如“菱形问题”之类的问题,并且在两个继承的方法具有相同的签名(或者在Python中只有相同的名称)的情况下会混淆优先级规则。请注意,这不是我们所知道的。在这里,每个类都有一个父类,因此它是单继承(即使继承层次结构有多个级别)。当一个类同时有多个父类时,就会发生多重继承,这会导致诸如“菱形问题”之类的问题,并且在两个继承的方法具有相同的签名(或者在Python中只有相同的名称)的情况下会混淆优先级规则。
class testT(object):
def check(self, str):
return "t" in str
class testTE(testT):
def check(self, str):
return super(testTE, self).check(str) and "e" in str
class testTES(testTE):
def check(self, str):
return super(testTES, self).check(str) and "s" in str
print(testTES().check("test"))
# True
print(testTES().check("dog"))
# False
print(testTES().check("dogs"))
# False
print(testTE().check("tuple"))
# True