Python 扩展不可变(冻结)数据类
我发现使用冻结的数据类是最干净的解决方案。添加单个类装饰器的实现非常简单:Python 扩展不可变(冻结)数据类,python,python-dataclasses,Python,Python Dataclasses,我发现使用冻结的数据类是最干净的解决方案。添加单个类装饰器的实现非常简单: 从数据类导入数据类 @数据类(冻结=真) 类不可变: 属性1:int 属性2:int 现在我想通过引入一个新属性attr3来扩展不可变的类: 类MyImmutableChild(不可变): 属性3:int 但是,这种行为并不像预期的那样: >>immutable\u obj=MyImmutableChild(attr1=1,attr2=3,attr3=5) ------------------------------
从数据类导入数据类
@数据类(冻结=真)
类不可变:
属性1:int
属性2:int
现在我想通过引入一个新属性attr3
来扩展不可变的类:
类MyImmutableChild(不可变):
属性3:int
但是,这种行为并不像预期的那样:
>>immutable\u obj=MyImmutableChild(attr1=1,attr2=3,attr3=5)
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
---->1不可变的对象=MyImmutableChild(attr1=1,attr2=3,attr3=5)
TypeError:\uuuu init\uuuuuuuuu()获取了意外的关键字参数“attr3”
啊,这可以通过向子类添加另一个@dataclass(freezed=True)
装饰器来解决