python - 无法使用 lambda 默认腌制数据类
问题描述
如果我有一个简单dataclass
的可变默认值,据我所知,我需要使用default_factory
.
但是,由于 lambda,这使得该类不可腌制:
@dataclass
class ExperimentConfig:
features: List[str] = field(
default_factory=lambda: ["value1", "value2"])
所以如果我们腌制它:
import cloudpickle
c = ExperimentConfig()
cloudpickle.dumps(c)
酸洗会返回:
TypeError: can't pickle mappingproxy objects
这是由于在 中mappingproxy
可见的对象c.__dataclass_fields__
:
{'features':
Field(name='features',
type=typing.List[str],
default=<dataclasses._MISSING_TYPE object at 0x7f6ca8434588>,
default_factory=<function ExperimentConfig.<lambda> at 0x7f6c9951b268>,
init=True,
repr=True,
hash=None,
compare=True,
metadata=mappingproxy({}),
_field_type=_FIELD
)
}
如何使课程可腌制?我需要这样做才能将其发送Parallel
到joblib
.
解决方案
推荐阅读
- php - 古腾堡在某些页面上保存时返回错误 500
- php - 仓库库存数据库模式
- php - MySQL 更新电子邮件地址并为其分配 ip
- javascript - 如何隐藏或显示按钮取决于可点击单选
- c# - 来自 JSON 字符串的 C# 数据反序列化 - 变量路由
- javascript - 在javascript中获取错误的插入符号位置
- c# - EF Core 2:MERGE 语句与 FOREIGN KEY 约束冲突
- django - Django CBV:从媒体下载 PDF 文档
- python - 试图通过事件停止循环,但它没有
- angular6 - 无法读取 server.js 页面中未定义的属性“父级”