来自数据类的dict返回空字典

2024-09-29 17:21:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我是数据类新手,正在尝试用一种简单的方法将数据类转换为字典,然后从JSON文件保存和加载。在实现我的应用程序所需的基础结构之前,我将在一个小型数据类上测试它,其中包含我将使用的变量,如下所示:

from dataclasses import dataclass, asdict
@dataclass 
class TestClass:
    def __init__(self, floatA:[float], intA:[int], floatB:[float]):
        self.var1 = floatA
        self.var2 = intA
        self.var3 = floatB

    def ConvertToDict(self):
        return asdict(self)

test = TestClass([0.2,0.1,0.5], [1,2,3], [0.9,0.7,0.6])
print(asdict(test))
print(test.ConvertToDict())

这两个print语句都是空字典“{}”,我似乎不明白为什么


Tags: 数据testself字典deffloatdataclassprint
1条回答
网友
1楼 · 发布于 2024-09-29 17:21:44

通过重写__init__方法,您实际上是在使dataclass装饰器成为禁止操作的对象。我认为您需要:

from dataclasses import dataclass, asdict
@dataclass 
class TestClass:
    floatA: float
    intA: int
    floatB: float

    def asdict(self):
        return asdict(self)

test = TestClass([0.2,0.1,0.5], [1,2,3], [0.9,0.7,0.6])
print(test)
print(test.asdict())

作为输出产生:

TestClass(floatA=[0.2, 0.1, 0.5], intA=[1, 2, 3], floatB=[0.9, 0.7, 0.6])
{'floatA': [0.2, 0.1, 0.5], 'intA': [1, 2, 3], 'floatB': [0.9, 0.7, 0.6]}

详情见the documentation

相关问题 更多 >

    热门问题