来自数据类 returns 空字典的字典
dict from dataclass returns empty dictionary
我是数据类的新手,我正在尝试用一种简单的方法将数据类转换为字典,然后我可以从 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())
两个打印语句都是一个空字典“{}”,我似乎无法弄清楚为什么
通过覆盖 __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]}
我是数据类的新手,我正在尝试用一种简单的方法将数据类转换为字典,然后我可以从 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())
两个打印语句都是一个空字典“{}”,我似乎无法弄清楚为什么
通过覆盖 __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]}