python:NameError:;全局名称'‘;没有定义

python:NameError:;全局名称'‘;没有定义,python,nameerror,global-namespace,Python,Nameerror,Global Namespace,在我的代码中,我有: class A: def a(): ...... def b(): a() ...... b() 然后编译器会说“NameError:global name a()未定义”。如果我从类a中取出所有内容,这将不会有问题,但是如何在类a中定义方法呢?多谢各位 您需要调用self.a()从b调用aa不是全局函数,它是类上的一个方法 您可能需要阅读更多的内容以获得更详细的信息。不,引发该异常的不是编译器。是

在我的代码中,我有:

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

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

然后编译器会说“NameError:global name a()未定义”。如果我从类a中取出所有内容,这将不会有问题,但是如何在类a中定义方法呢?多谢各位

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


您可能需要阅读更多的内容以获得更详细的信息。

不,引发该异常的不是编译器。是Python解释器循环实现了这一点。为什么要从类定义内部调用()呢?@TravisGD我总是在Java中这样做,比如一个方法在另一个方法中调用……不,我是说底线。在类定义中调用一个()。在方法外,在定义内。如果您习惯于Java,那么在学习/编程python时,请忘记它。Java是一种完全不同的语言;在python中使用其范例和约定只会产生糟糕的python代码。在本例中:python方法中的实例属性与其他方法完全相同。如果要访问它,必须首先通过
self.method\u name
从实例访问属性。如果没有显式的
self
如何区分全局函数和方法(注意:函数可以在运行时创建->这是不可能的)。