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

Django Channels中super().__init__无星号传参是否正确?

Django Channels中ChatConsumer的__init__调用问题

这种写法不正确,会触发参数不匹配的错误。

原因很直接:

  • 你定义__init__时用了*args(把任意数量的位置参数打包成元组)和**kwargs(把任意数量的关键字参数打包成字典),但直接将args和kwargs传给父类构造器时,相当于把整个元组作为单个位置参数、整个字典作为单个关键字参数传递,而不是把里面的元素分散传递。
  • WebsocketConsumer的父类构造器期望接收的是分散的位置参数和关键字参数,不是打包后的元组和字典,这会直接抛出TypeError,提示参数数量或类型不匹配。

正确的写法必须加上单星号和双星号解包参数:

class ChatConsumer(WebsocketConsumer):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.room_name = None
        self.room = None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:56:40