Python NameError:未为类内的成员方法定义名称“methodA”

Blu*_*Sea 1 python

我的班级定义如下:

class A:
    def __init__(self, n):
        self.n = n
    
    def methodA(self):
        print("methodA")

    def methodB(self):
        methodA()
        print("methodB")
Run Code Online (Sandbox Code Playgroud)

当我测试它时:

a = A(1)
a.methodB()
Run Code Online (Sandbox Code Playgroud)

它返回以下错误:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-13-efe99826f05e> in <module>
     11 
     12 a = A(1)
---> 13 a.methodB()

<ipython-input-13-efe99826f05e> in methodB(self)
      7 
      8     def methodB(self):
----> 9         methodA()
     10         print("methodB")
     11 

NameError: name 'methodA' is not defined
Run Code Online (Sandbox Code Playgroud)

我检查了这个错误的不同错误原因,他们中的大多数人都说被调用的方法(这里是 methodA())在被另一个方法(methodB)调用之前没有定义。但是我已经把methodA()放在methodB()之上。

谁能告诉我这是怎么回事?

一个类成员方法如何调用同一个类的另一个成员方法?

真的很感激任何提示!

Lev*_*sky 5

methodA确实没有定义。该方法可通过实例访问。你应该这样称呼它:

def methodB(self):
    self.methodA()
    print("methodB")
Run Code Online (Sandbox Code Playgroud)

原因很简单,就是一旦定义了类,类定义就没有自己的作用域。这在文档其他地方有详细解释。