Python报错TypeError: str object is not callable,求代码排查解决
TypeError: str object is not callable 错误排查与解决
错误原因
你的Question类中,question_prompt是字符串类型的实例属性,但主文件里却用了函数调用的语法question.question_prompt()(末尾加了括号)——这相当于试图把字符串当作函数执行,直接触发了str object is not callable错误。
解决方法
两种修复方案任选其一即可:
方案1:修改主文件的调用逻辑
既然question_prompt是字符串属性,直接访问它就行,去掉末尾的括号:
# 主文件循环部分修改为: for question in questions: print(question.question_prompt) # 去掉括号,直接访问字符串属性 answer = input("Answer: ") if answer == question.answer: score += 1
方案2:将question_prompt改为类方法(适合后续扩展)
如果需要让question_prompt成为可调用的方法(比如后续要动态生成题目内容),可以修改Question类:
# Question.py 修改为: class Question: def __init__(self, question_prompt, answer): self._question_prompt = question_prompt # 用下划线标记为内部属性 self.answer = answer def question_prompt(self): return self._question_prompt # 定义方法返回提示文本
这种情况下,主文件原有的print(question.question_prompt())代码无需修改即可正常运行。
另外,主文件里的题目存在两处拼写错误:How man seconds和How man milliseconds,建议改成How many,避免题目出现语法问题。
内容的提问来源于stack exchange,提问作者anon_ mous
相关产品推荐
相关产品推荐

