我正在寻找快捷方式:
name = ''
if myobj not None and myobj.name not None:
name = myobj.name
date = ''
if myobj not None and myobj.date not None:
date = myobj.date
logging.info('Something happened with %s at %s', name, date)
类似类似的事物:
logging.info('Something happened with %s at %s', none_as_empty_str(myobj.name), none_as_empty_str(myobj.date))
有什么主意吗?谢谢!
答案 0 :(得分:1)
如果您想要较短的内容,可以使用:
myobj and myobj.name or ''
如果myobj
或myobj.name
为None(否则为false),将产生''
。
否则将产生myobj.name
。
或者,只要您将访问属性推迟到函数内部或间接访问,您的none_as_empty_str
函数就可以使用。这样,如果myobj
为None,则可以获取空字符串而不是异常:
def none_as_empty_str(obj, attr):
return getattr(obj, attr, None) or ''
logging.info('Something happened with %s at %s',
none_as_empty_str(myobj, 'name'),
none_as_empty_str(myobj, 'date'))