如何让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
相关产品推荐
相关产品推荐

