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

Python新手求助:类内调用函数触发NameError问题

Python类内方法调用报错的问题解决

错误原因

你在类的__init__方法里直接写billNamePrompt(),Python会把它当成全局函数去查找,但这个函数只定义在类内部作为实例方法存在,必须通过当前实例(也就是self)才能访问,所以会抛出NameError。

修正后的代码

class Prompts:
    def __init__(self):
        print("Hello! Welcome to my mini-budgeting program")
        # 通过self调用类内的实例方法
        self.bill_name = self.billNamePrompt()

    def billNamePrompt(self):
        return input("Please input the name of the bill: ")

# 创建类的实例
budget_prompt = Prompts()
# 可以查看存储的账单名称
print(f"账单名称: {budget_prompt.bill_name}")

核心调整点

  • 调用类内实例方法时必须加self.前缀:self.billNamePrompt(),这样Python才会识别这是当前实例的方法。
  • 去掉了外部多余的bill_name变量和__init__的参数,类内部可以通过self.bill_name直接存储实例数据,不需要外部传入初始值(如果业务需要再添加参数即可)。
  • 简化了billNamePrompt的逻辑,直接返回输入结果再赋值给self.bill_name,代码更简洁清晰。

基础知识点补充

Python类的实例方法(比如__init__、billNamePrompt)第一个参数固定是self(名字可自定义,但行业惯例用self),它代表当前创建的类实例。所有实例方法、实例属性的访问都必须通过self来完成,这是面向对象编程中实例绑定的基本规则。

内容的提问来源于stack exchange,提问作者bread_one2three

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 14:46:01