有没有一种Pythonic方法来处理可能不包含任何对象链的对象链?

2024-06-26 01:34:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Django代码库有一些外键引用,这些外键引用很深,在每个级别检查真实性感觉就像是一种代码气味

有没有一种方法可以用更少的样板来检查这种东西

举一个简单的例子:

if page.banner.image:
    # ...

如果page.banner是可选的,并且它不存在,它将返回None,并抛出一个异常,正确地说,NoneType没有image属性

显而易见的解决办法是

if page.banner and page.banner.image:
    # ...

但这会变得重复和冗长。我想你可以用getattr()来做一些我想要做的事情,但这更难看:

if getattr(getattr(page, 'banner', None), 'image', None):
    # ...

有没有一种简洁的方法不用这些条件从句就可以做到这一点


Tags: django方法代码imagenoneifpage样板