首页 > 解决方案 > 在带有 queue.Queue() 字段的数据类上使用 asdict() 会引发 TypeError

问题描述

当使用队列作为字段之一的数据类制作字典时,python 会抛出 TypeError:

TypeError: cannot pickle '_thread.lock' object

要重现错误,可以使用以下代码:

from dataclasses import dataclass, asdict
import queue

@dataclass
class test:
    name:str = 'SomeString'
    data:int = 12345
    Que:queue.Queue = queue.Queue()

dataClass_obj = test()
dict_obj = asdict(dataClass_obj)

请注意,将队列添加到字典通常不会产生任何错误。

我需要知道如何在数据类中包含 queue.Queue() 对象,这样在数据类上使用 asdict 方法就不会产生 TypeError。

由于程序在任何地方都使用数据类来发送参数,因此我也在此处保留数据类,而不是完全使用字典。

标签: pythonpython-dataclasses

解决方案


推荐阅读