Python: множественные проблемы наследования - PullRequest
0 голосов
/ 27 ноября 2018

Я немного озадачен проблемой наследования в 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):
       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")

Как я могу реализовать это поведение?Я пытался с «супер», но мой метод не был успешным.
Спасибо за вашу помощь

1 Ответ

0 голосов
/ 27 ноября 2018

Вам просто нужно объединить вызовы check в подклассах с выводом super(...).check():

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...