python:NameError:全局名称'...'未定义[重复]

Posted

技术标签:

【中文标题】python:NameError:全局名称\'...\'未定义[重复]【英文标题】:python: NameError:global name '...‘ is not defined [duplicate]python:NameError:全局名称'...'未定义[重复] 【发布时间】:2013-07-07 14:07:57 【问题描述】:

在我的代码中,我有:

class A:
    def a():
        ......

    def b():
        a()
        ......
    b()

然后编译器会说“NameError: global name a() is not defined”。如果我把所有的东西都从A类中拉出来,那是没有问题的,但是如何在A类中定义方法呢?非常感谢。

【问题讨论】:

不,不是编译器抛出异常。正是 Python 解释器循环执行此操作。 为什么要从类定义中调用a()? @TravisGD 我总是在Java中这样做,比如一个方法在另一个方法中被调用... 不,我的意思是底线。您在类定义中调用 a() 。在方法之外,在定义之内。 如果您习惯了 Java在 Python 中学习/编程时忘记它。 Java 是一种完全不同的语言。在 python 中使用它的范例和约定只会产生糟糕的 python 代码。在这种情况下:在 python 中,方法是实例属性,就像其他任何东西一样。如果您想访问它,您必须首先通过self.method_name 从实例访问属性。如果没有明确的self,你怎么能区分全局函数和方法(注意:函数可以在运行时创建 -> 这是不可能的)。 【参考方案1】:

您需要调用self.a()b 调用aa 不是全局函数,它是类上的方法。

您可能需要进一步阅读 Python tutorial on classes 以了解更详细的信息。

【讨论】:

以上是关于python:NameError:全局名称'...'未定义[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python:NameError:未定义全局名称“foobar”[重复]

Python XML NameError:未定义全局名称“qn”

NameError:未定义全局名称“unicode” - 在 Python 3 中

NameError:未定义全局名称

python NameError:未定义全局名称'__file__'

NameError:未定义全局名称“reduce”