首页 > 解决方案 > super() 没有属性父方法

问题描述

编辑:此错误特定于 AWS Lambda

您好,我无法弄清楚为什么我无法从孩子的方法中调用父母的方法。

我有一个父类定义在classes/IDKKKK.py

class IDKKKK:
    def foobar(self, foo, bar):
        return { 'foo': foo, 'bar': bar}

    def foobar2(self, fo, ob, ar):
        return {'foobar': fo+ob+ar}

我有一个子类定义在classes/OMGGG.py

from classes.IDKKKK import IDKKKK

class OMGGG(IDKKKK):
    def childFoo(self):
        idc = {}
        return super().foobar(idc, super().foobar2('idk', ' what is ', 'going on'))

我创建了一个实例OMGGG并调用childFoo()super() has no attribute 'foobar'在我的main.py

from classes.OMGGG import OMGGG

omg = OMG()
print(omg.childfoo())

我正在使用 python 3.7 所以super()应该可以工作,但是我试过了

super(OMGGG, self).foobar(...

无济于事。

不太确定我做错了什么。我在想我可能不正确地导入它?

编辑:看来我忘了添加自我。这是翻译的错误。

标签: pythonoopaws-lambda

解决方案


您的childFoo方法需要self作为参数:

def childFoo(self):
    ...

推荐阅读