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

Python开发Discord Bot调用cogs下blackjack类构造函数报错

问题根源

你遇到的报错module 'cogs' has no attribute 'blackjack'是Python包导入规则不匹配导致的,和异步方法实例化对象无关,你的__init__参数也没有问题。

解决步骤

  • 首先在cogs目录下新增一个空的__init__.py文件,这个文件是Python将目录识别为合法包的必要标记,没有的话无法通过包路径导入子文件。
  • 然后在casino.py的头部添加正确的导入语句,因为casino.py和blackjack.py在同一个包下,推荐用相对导入:
    # 直接导入目标类,写法最简洁
    from .blackjack import BlackjackGame
    
    如果你习惯用绝对导入,只要运行入口是根目录的bot.py,也可以写:
    from cogs.blackjack import BlackjackGame
    
  • 最后修改实例化代码行,不需要写全cogs.blackjack.前缀,直接调用导入的类即可:
    game = BlackjackGame(self.bot, pCtx.message, int(amount))
    

疑问解答

  1. 异步方法中可以正常同步创建对象,只要类的__init__方法里没有异步逻辑就不需要用asyncio包装,你的场景完全不需要做额外处理。
  2. Python完全支持跨目录导入文件,不需要把所有代码都放在顶层目录,只要遵守包导入规则即可:
    • 包含__init__.py的目录会被识别为Python包
    • 同包下的文件用from . import xxx做相对导入
    • 从项目根目录导入用绝对路径即可

内容的提问来源于stack exchange,提问作者vK 3 1 RON

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:48:02