我的班级定义如下:
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()之上。
谁能告诉我这是怎么回事?
一个类成员方法如何调用同一个类的另一个成员方法?
真的很感激任何提示!
methodA确实没有定义。该方法可通过实例访问。你应该这样称呼它:
def methodB(self):
self.methodA()
print("methodB")
Run Code Online (Sandbox Code Playgroud)
原因很简单,就是一旦定义了类,类定义就没有自己的作用域。这在文档和其他地方有详细解释。
| 归档时间: |
|
| 查看次数: |
31 次 |
| 最近记录: |