【发布时间】: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