【问题标题】:Extend immutable (frozen) dataclasses扩展不可变(冻结)数据类
【发布时间】:2021-01-19 05:27:29
【问题描述】:

我发现使用冻结数据类是make Python objects immutable 最干净的解决方案。添加单个类装饰器的实现非常简单:

from dataclasses import dataclass

@dataclass(frozen=True)
class Immutable:
    attr1: int
    attr2: int

现在我想通过引入一个新属性attr3 来扩展Immutable 类:

class MyImmutableChild(Immutable):
    attr3: int

但是,行为并不像预期的那样:

>>> immutable_obj = MyImmutableChild(attr1=1, attr2=3, attr3=5)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-2b6c18366721> in <module>
----> 1 immutable_obj = MyImmutableChild(attr1=1, attr2=3, attr3=5)

TypeError: __init__() got an unexpected keyword argument 'attr3'

【问题讨论】:

    标签: python python-dataclasses


    【解决方案1】:

    啊,这很简单,只需在子类中添加另一个 @dataclass(frozen=True) 装饰器即可解决

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-30
      • 2013-11-24
      • 2023-04-08
      • 1970-01-01
      • 2012-03-27
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多