python - Pickling 数据类的实例

标签 python python-dataclasses

是否可以腌制/莳萝an_instance开发如下?

import dill
import pandas as pd
import numpy as np
from datetime import datetime, timezone
from dataclasses import make_dataclass, field

fields = [('float_val', float, field(default=np.nan)),
          ('df', pd.DataFrame, field(default_factory=pd.DataFrame)),
          ('int_val', int, field(default_factory=int)),
          ('time_val', datetime, field(default=datetime.now(timezone.utc)))]

Aclass = make_dataclass('Aclass', fields)

an_instance=Aclass()

dill.dump(an_instance, open('test.pkl', 'wb'))

转储给出 PicklingError: Can't pickle <class 'types.Aclass'>: it's not found as types.Aclass

最佳答案

感谢 @Tom Myddeltyn 的 Issue35510 错误跟踪器。 dill.dumpdill.load 通过使用 Aclass.__module__ = __name__ 设置名称来工作。

完整代码如下:

fields = [('float_val', float, field(default=np.nan)),
          ('df', pd.DataFrame, field(default_factory=pd.DataFrame)),
          ('int_val', int, field(default_factory=int)),
          ('time_val', datetime, field(default=datetime.now(timezone.utc)))]

Aclass = make_dataclass('Aclass', fields)
Aclass.__module__ = __name__ # provide name for pickling the class

an_instance=Aclass()

dill.dump(an_instance, open('test.pkl', 'wb'))
dill.load(open('test.pkl', 'rb'))

关于python - Pickling 数据类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65382074/

相关文章:

python - 扩展卡住数据类并从基类实例中获取所有数据

python - python中多列的长到宽格式

python - Keras 后端函数中的参数 keepdims 是做什么用的?

python - Powershell 退出 Python 环境

python - Django 内联表单集的初始数据

python - 来自嵌套数据类的字典

python - 如何比较持有 numpy.ndarray 的数据类的相等性(bool(a==b) 引发 ValueError)?

python - 避免针对 @dataclass 变量声明的 Python lint 警告

python - 我可以有一个简单的数据类字段列表吗

python - 正在打印两个 if-else 条件输出