Вызов дочернего метода в родительском классе в Python - PullRequest
0 голосов
/ 21 января 2019

Примечание: речь идет не о вызове родительского метода в дочернем классе .super ()

У меня есть три класса, скажем Parent, Child1 и Child2.Child1 и 2 оба имеют метод Cry(), а Parent class имеет другой метод, например MakeChildrenStopCry(), в котором вызывается Cry().Однако у класса Parent нет метода Cry().Нужно ли определять Cry() в классе Parent?

Поскольку у меня нет объектов родительского класса, и я всегда использую дочерние классы, я просто создал «пустые функции», поскольку наследование просто отменяет эти пустые функции с функциями из классов Child.

def MakeChildrenStopCry(self):
   if self.Cry():
    self.DoWhateverToStopCry(self)
def Cry(self)
   return()

Для полного примера кода вы можете проверить это , но я думаю, что выше должно быть ясно.

Это не вызывает никаких проблем в моем коде, япросто хочу знать, что делается нормально или, может быть, лучше настроить мой код по-другому.

1 Ответ

0 голосов
/ 21 января 2019

Python довольно программист уверен на этом уровне.Вы всегда можете вызвать метод cry из класса, даже если он не определен в классе.Python будет просто доверять вам предоставить объект, который знает метод cry на тот момент, если будет вызван.

Так что это прекрасно:

class Parent:
    def makeChildrenStopCry(self):
        if self.cry():
            self.doWhateverToStopCry()

class Children(Parent):
    crying = False
    def makeCry(self):
        self.crying = True
    def doWhateverToStopCry(self):
        self.crying = False
    def cry(self):
        return self.crying

Это даетинтерактивный сеанс:

>>> child = Children()
>>> child.makeCry()
>>> print(child.crying)
True
>>> child.makeChildrenStopCry()
>>> print(child.crying)
False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...