You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在其他类中正确实例化dataclass并修改其值?

正确实现Python Dataclass与其他类的交互

错误分析

你的代码存在几个关键问题:

  • 定义dataclass误用了def关键字,dataclass必须基于class定义
  • UDP类的属性初始化位置错误,self.datastorage应该放在类的__init__方法内完成
  • 代码中some attributes属于无效语法,类的属性需要规范定义

正确实现步骤

步骤1:正确定义Dataclass

使用class关键字配合dataclass装饰器定义,注意字段的类型标注:

from dataclasses import dataclass

@dataclass(slots=True)
class Storage:
    timestamp: float
    value: float

注:slots=True仅用于限制实例属性的范围,不会导致字段只读——如果之前遇到只读报错,大概率是误加了frozen=True参数,移除该参数即可正常修改字段值。

步骤2:定义使用Dataclass的UDP类

将dataclass的实例化逻辑放在UDP类的__init__方法中,这是Python类初始化属性的标准方式:

class UDP:
    def __init__(self):
        # 初始化Storage实例,可指定初始值
        self.datastorage: Storage = Storage(timestamp=0.0, value=0.0)

    def updatedata(self, time: float, val: float):
        # 直接修改Storage实例的字段值
        self.datastorage.timestamp = time
        self.datastorage.value = val

步骤3:测试代码验证功能

def main():
    test = UDP()
    test.updatedata(0.01, 2)
    # 打印验证更新结果
    print(f"更新后:时间戳={test.datastorage.timestamp},数值={test.datastorage.value}")

if __name__ == "__main__":
    main()

内容的提问来源于stack exchange,提问作者geekygekko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:20:32