我的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):
# ...
有没有一种简洁的方法不用这些条件从句就可以做到这一点
Python建议使用easier to ask for forgiveness than permission方法
有一些关于请求允许和宽恕的讨论
相关问题 更多 >
编程相关推荐