调用父类函数

时间:2018-11-02 21:55:49

标签: python nested super

这是我第一次尝试使用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 :(得分:1)

问题是您从未为getMessages类指定父类。

您应该像这样定义类:

class getMessages(Gmail):

除非子类覆盖getMessagesBodies()函数,否则实际上不必使用super()来指定要调用父函数。通过在子类中使用self.getMessagesBodies(),由于子级从父级继承了所有相同的函数,因此它将自动调用父级的函数。

因此您可以在不使用超级类的情况下调用该函数:

self.getMessagesBodies(text)

还有一个提示,就是getMessages看起来更像是函数名而不是类。通常,类是全大写的,并且是对象,而不是动作。