Python函数无法识别

时间:2018-02-04 01:19:12

标签: python

这是我的代码:

class fs_sync(object):

    def check_source(self, id):
        src = fb.get('/sources', id)
        return src

    def main():
        ...
        src = check_source(data['source_id'])

    if __name__ == "__main__":
        main()

我无法识别check_source函数。我收到global name 'check_source' is not defined错误。如果我使用self.check_source调用它,则会收到错误global name 'self' is not defined

如何在类中调用一个简单的函数?

2 个答案:

答案 0 :(得分:2)

首先,我不建议使用名为" main"的方法。

然后,如果fs_sync的类需要main,你应该写成如下

def fs_main(self):
    ...
    src = self.check_source(data['source_id'])

否则,也许您可​​以创建一个名为utils或utils.py的目录或.py来包含您的常用功能。如下所示

在utils.py

    def for_fs_main(fs_sync):
        ...
        src = fs_sync.check_source(data['source_id'])

代码

from utils import for_fs_main

class fs_sync(object):

    def check_source(self, id):
        src = fb.get('/sources', id)
        return src


if __name__ == "__main__":
    fss = fs_sync()
    for_fs_main(fss)

答案 1 :(得分:0)

@bernie yum是对的,但他错过了几分。 当您在课程中调用某个函数时,请说self.functionName(parameters)而不是functionName(parameters)。在函数名称中,您需要添加self,但在创建类时不必将其添加到类中。

如果你执行fb.get('/sources', id),则需要先导入fb。根据您提供给我们的代码,我不确定您是否已将其导入。

else添加if是一种很好的编码习惯。

通常你也使用__init__,但没有必要,这取决于你想要做什么。

您的代码应如下所示:

import fb    

class fs_sync(object):
    def check_source(self, id):
        src = fb.get('/sources', id)
        return src

    def main(self):
        ...
        src = self.check_source(data['source_id'])

if __name__ == "__main__":
    main()