类内部引用未定义方法触发NameError错误求助
解决你的Python NameError问题
嘿,我来帮你搞定这个报错!你遇到的NameError: name 'squares' is not defined是两个小问题导致的:
- 代码执行顺序问题:Python是从上到下逐行执行的,当它处理
class one里的b=squares时,下面的squares函数还没被定义,所以它找不到这个名字。 - 方法位置问题:你把
squares定义在了类外面,但看起来你是想把它作为类的方法来用,这种写法不符合面向对象的规范,也容易引发问题。
修复方案(推荐的面向对象写法)
把squares函数放到类内部作为实例方法,并且确保在赋值给b之前先定义它:
class one(object): def squares(self): print('hi') # 现在squares已经在类里定义完成,可以安全赋值给b b = squares
测试一下
创建类的实例并调用b方法:
obj = one() obj.b() # 会输出: hi
另一种情况(如果squares必须是外部函数)
如果你确实需要squares是类外部的函数,那要先定义函数再定义类:
def squares(self): print('hi') class one(object): b = squares
这样就能避免NameError了,因为当Python处理类里的b=squares时,squares已经被定义过啦。
内容的提问来源于stack exchange,提问作者nanditha raj
相关产品推荐
相关产品推荐

