【问题标题】: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,你怎么能区分全局函数和方法(注意:函数可以在运行时创建 -> 这是不可能的)。

标签: python nameerror global-namespace


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-05-03
    • 2015-07-19
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多