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

如何不修改Python Dataclass定义,为缺失的字段赋值None?

问题解决方案

你遇到的报错是因为直接访问row.name时,如果row对象本身不存在name属性,就会直接抛出AttributeError,还没来得及执行后续的判断逻辑。

解决方法

使用Python内置的getattr()函数即可解决,该函数支持在目标属性不存在时返回你指定的默认值,不会抛出属性不存在的异常。
你只需要将实例化Person时的name赋值逻辑改成如下写法即可:

  • 如果希望属性不存在时返回None:name=getattr(row, 'name', None)
  • 如果希望属性不存在时返回空字符串:name=getattr(row, 'name', '')

完整代码示例

from dataclasses import dataclass

@dataclass
class Person:
    name: str
    age: int  
    married: bool

# 遍历数据源赋值
for row in something:
    ob = Person(
        name=getattr(row, 'name', None),
        age=row.age,
        married=row.married,
     )

扩展说明

如果后续你遇到其他字段也可能不存在的情况,都可以用getattr()函数处理,只需要把第二个参数改成对应字段名,第三个参数改成你需要的默认值即可,完全不需要修改Person dataclass的原有定义,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 08:06:08