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
相关产品推荐
相关产品推荐

