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

如何在列表推导式中访问可能为None的成员属性避免AttributeError报错

解决方案

你遇到的报错是因为当Item实例的y成员为None时,直接访问y.z会触发AttributeError,需要在访问z属性前增加判空逻辑,以下是几种常用的可直接运行的实现方式:

  • 方案1:条件表达式写法(全Python版本兼容,可读性最高)
    直接在列表推导式中使用三元运算符做判空处理:
    xs = [(item.x, item.y.z if item.y is not None else None) for item in items]
    
  • 方案2:getattr简化写法(全Python版本兼容,代码更简洁)
    利用Python内置的getattr方法的默认值特性实现需求,即使第一个参数为None也会直接返回默认值不会报错:
    xs = [(item.x, getattr(item.y, 'z', None)) for item in items]
    
  • 方案3:可选链写法(仅Python 3.10及以上版本支持,代码最精简)
    使用Python 3.10新增的PEP 505可选链语法:
    xs = [(item.x, item.y?.z) for item in items]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 05:24:05