You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

类内部引用未定义方法触发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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:15:01