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
调用a
。 a
不是全局函数,它是类上的方法。
您可能需要进一步阅读 Python tutorial on classes 以了解更详细的信息。
【讨论】:
以上是关于python:NameError:全局名称'...'未定义[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python:NameError:未定义全局名称“foobar”[重复]
Python XML NameError:未定义全局名称“qn”
NameError:未定义全局名称“unicode” - 在 Python 3 中