Вызов функции родительского класса - PullRequest
0 голосов
/ 03 ноября 2018

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

Я видел похожие вопросы на SO, но они не работают в моем случае, или я делаю что-то не так

Не могли бы вы помочь мне позвонить getMessagesBodies() с list()?

class Gmail:
    def getMessagesBodies(self, text):
        return self.unpackPayload(text)

    def unpackPayload(self, text):
        return (text)


    class getMessages:

        def __init__(self):
            self.service = auth()

        def list(self,text):
            return super(self).getMessagesBodies(text)  # error here, how to call getMessagesBodies properly?

1 Ответ

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

Проблема в том, что вы никогда не указывали, какой родительский класс был для класса getMessages.

Вы должны определить класс следующим образом:

class getMessages(Gmail):

Если ваш дочерний класс не переопределяет функцию getMessagesBodies(), вам фактически не нужно использовать super(), чтобы указать, что вы хотите вызвать родительскую функцию. Используя self.getMessagesBodies() в вашем дочернем классе, он автоматически вызовет функцию родителя, поскольку ребенок наследует все те же функции от родителя.

Таким образом, вы можете вызывать функцию без использования супер, как:

self.getMessagesBodies(text)

Кроме того, просто подсказка: getMessages больше похоже на имя функции, чем на класс. Обычно классы полностью пишутся с заглавной буквы и являются объектом, а не действием.

...