如何在Python主文件中调用其他文件自定义类及解决调用无输出问题
问题原因
- 类实例方法缺少
self参数:Python中类的实例方法第一个参数必须为self,用来指向实例本身,你定义的synon方法没有加该参数,实例调用时会直接抛出TypeError,导致程序终止无后续输出。 score变量未初始化:方法内直接使用score += 0/score +=1会抛出NameError,同样会导致程序终止。- 文件名路径问题:代码中打开的
filename文件需要和你运行主代码的工作目录在同一路径下,否则会抛出FileNotFoundError。 - 变量命名冲突:循环中用了
for syn in wordnet.synsets(first),这里的syn和你定义的类名syn重名,会覆盖类的引用,属于不规范写法。 - 文件资源未释放:直接用
open()打开文件后没有手动关闭,容易出现资源占用问题。
修正后的代码
synonyms.py 代码
from nltk.corpus import wordnet class syn: def synon(self): # 补全实例方法必填的self参数 score = 0 # 初始化分数变量 # 确保同目录下存在你要读取的filename文件,也可以换成完整绝对路径避免路径错误 with open('filename', "r", encoding="utf-8") as f: # 用with语法自动管理文件资源 first = f.readline().strip() # 去掉读取内容的换行符避免后续匹配出错 print("1. ", first) input_ans = input('Answer: ').strip() synonyms = [] # 修改循环变量名避免和类名冲突 for syn_set in wordnet.synsets(first): for l in syn_set.lemmas(): synonyms.append(l.name()) if input_ans == first: print("Wrong") elif input_ans in set(synonyms): print("Correct") score += 1 else: print("Wrong") return score
主代码无需修改,运行前确认同目录下存在对应名称的读取文件即可正常输出。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

