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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:24:02