Python:NameError:未定义全局名称"foobar" [英] Python: NameError: global name 'foobar' is not defined

查看:78
本文介绍了Python:NameError:未定义全局名称"foobar"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了以下课程:

class myClass(object):
    def __init__(self):
        pass

    def foo(self, arg1, arg2):
        pp = foobar(self, arg1, arg2)
        if pp:
            return 42
        else
            return -666


    def foobar(self, arg1, arg2):
        if arg1 == arg2:
            return 42
        else:
            return None

逻辑是荒谬的-忽略它.我想这样做的是从另一个实例方法调用一个实例方法-我得到了NameError.我最初以为这是由于foo()在定义之前调用了foobar(),但是在脚本中切换函数定义的顺序没有什么区别.

The logic is nonsensical - ignore it. What I am trying to so is to call an instance method from another instance method - and I am getting a NameError. I originally thought that this was due to foo() calling foobar() before it had been defined - but switching the order of the function definitions in the script made no difference.

是否有人导致此错误,以及如何解决该错误?

Does anyone what's causing this error, and how to fix it?

推荐答案

Python不会自动将代码范围限定在本地类中.您需要告诉它.

Python doesn't scope code to the local class automatically; you need to tell it to.

pp = self.foobar(arg1, arg2)

http://docs.python.org/tutorial/classes.html

这篇关于Python:NameError:未定义全局名称"foobar"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆