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

Python PONG项目拆分模块后遇AttributeError:模块无listen属性求助

解决Pong游戏拆分模块后的AttributeError: module 'modules.win.win' has no attribute 'listen'问题
  • 先查modules/win/win.py的实现逻辑,对应调整调用方式:

    1. 要是模块里写了Window这类窗口类,别直接调用模块的listen,得先实例化类再调用实例方法:
      # main2.py 修正后的写法
      from modules.win.win import Window
      win = Window()
      win.listen()
      
    2. 要是模块里直接定义了listen独立函数,得把函数导入后再调用,而不是调用模块本身:
      # main2.py 修正后的写法
      from modules.win.win import listen
      listen()
      
    3. 要是原来单文件里的listen是基于pygame窗口对象的逻辑,注意pygame原生窗口对象没有listen方法——你肯定是自己封装了事件监听函数,拆分时要确保这个函数被正确导出,调用的是函数而非窗口对象。
  • 确认项目路径没问题:
    检查VS Code的工作目录是不是项目根目录g:\pong,避免导入路径错误。可以在main2.py开头加两行代码验证:

    import sys
    print(sys.path) # 看输出里有没有项目根目录
    
  • 对照原单文件代码核对逻辑:
    把拆分后的代码和之前能运行的单文件对比,确认listen的定义位置和调用方式——拆分模块最容易犯的错就是把实例方法当成模块级方法调用,这大概率是你报错的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:01:01