Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 扩展不可变(冻结)数据类_Python_Python Dataclasses - Fatal编程技术网

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)
装饰器来解决