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

如何让Python dataclasses与__slots__更好地协同工作?

Python 3.7中Dataclasses与__slots__的使用注意事项

嘿,关于Python 3.7里dataclasses和__slots__的搭配使用,有几个关键点得跟你掰扯清楚:

  • 官方移除直接支持,但仍可配合使用
    在Python 3.7中,官方决定不再让dataclasses直接支持__slots__,不过你还是能手动在dataclass类里定义__slots__来搭配用,写法是这样的:

    from dataclasses import dataclass
    @dataclass
    class C():
        __slots__ = "x"
        x: int
    
  • 不能给带__slots__的dataclass字段设默认值
    由于__slots__的底层工作机制,如果你尝试给dataclass的字段设置默认值,百分百会触发错误。比如下面这段代码:

    from dataclasses import dataclass
    @dataclass
    class C():
        __slots__ = "x"
        x: int = 1
    

    运行后会抛出类似这样的错误:

    Traceback (most recent call last):
    ...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:08:05