Если вы хотите что-то относительно короткое, вы можете использовать:
myobj and myobj.name or ''
Если myobj
или myobj.name
равно None (или иначе ложно), это приведет к ''
.
В противном случае он выдаст 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'))