如何获取Python dataclass的所有字段并打印对应值?
如何实现打印dataclass的字段名和对应值?
要获取dataclass的字段并打印对应值,可以通过dataclasses模块提供的工具函数实现,以下是两种可行方案:
方案一:通过dataclasses.fields()获取字段
dataclasses.fields()函数可以返回dataclass实例对应的所有Field对象列表,每个Field对象包含字段名称等元数据,再通过getattr()从实例中取出对应字段的值:
import dataclasses @dataclasses.dataclass class Test: a: str = "a value" b: str = "b value" test = Test() def print_data_class(dataclass_instance): # 获取dataclass的所有字段对象 fields = dataclasses.fields(dataclass_instance) for field in fields: # 从实例中提取当前字段的值 field_value = getattr(dataclass_instance, field.name) # 按期望格式输出 print(f'"{field.name}": "{field_value}"') print_data_class(test)
运行后输出:
"a": "a value" "b": "b value"
方案二:通过dataclasses.asdict()转字典(更简便)
直接将dataclass实例转换为字典,再遍历字典的键值对打印,代码更简洁:
import dataclasses @dataclasses.dataclass class Test: a: str = "a value" b: str = "b value" test = Test() def print_data_class(dataclass_instance): # 将dataclass实例转为字典 data_dict = dataclasses.asdict(dataclass_instance) for key, value in data_dict.items(): print(f'"{key}": "{value}"') print_data_class(test)
该方案的输出与方案一完全一致,适合追求简洁实现的场景。
内容的提问来源于stack exchange,提问作者Pioneer_11
相关产品推荐
相关产品推荐

