Python PONG项目拆分模块后遇AttributeError:模块无listen属性求助
解决Pong游戏拆分模块后的
AttributeError: module 'modules.win.win' has no attribute 'listen'问题 先查
modules/win/win.py的实现逻辑,对应调整调用方式:- 要是模块里写了
Window这类窗口类,别直接调用模块的listen,得先实例化类再调用实例方法:# main2.py 修正后的写法 from modules.win.win import Window win = Window() win.listen() - 要是模块里直接定义了
listen独立函数,得把函数导入后再调用,而不是调用模块本身:# main2.py 修正后的写法 from modules.win.win import listen listen() - 要是原来单文件里的
listen是基于pygame窗口对象的逻辑,注意pygame原生窗口对象没有listen方法——你肯定是自己封装了事件监听函数,拆分时要确保这个函数被正确导出,调用的是函数而非窗口对象。
- 要是模块里写了
确认项目路径没问题:
检查VS Code的工作目录是不是项目根目录g:\pong,避免导入路径错误。可以在main2.py开头加两行代码验证:import sys print(sys.path) # 看输出里有没有项目根目录对照原单文件代码核对逻辑:
把拆分后的代码和之前能运行的单文件对比,确认listen的定义位置和调用方式——拆分模块最容易犯的错就是把实例方法当成模块级方法调用,这大概率是你报错的原因。
内容的提问来源于stack exchange,提问作者fenixthebuilder
相关产品推荐
相关产品推荐

