Есть ли в Python аналог JS конструкции "?."?
В JavaScript есть конструкция foo?.bar, когда при обращении к несуществующему полю объекта возвращается null
Существует ли подобное в Python?
Ответы (3 шт):
Автор решения: Ник
→ Ссылка
К сожалению, я не могу вспомнить чего то похожего в питоне Но здесь есть такая прекрасная штука, как тернарный оператор. Достаточно красиво выглядит и легко запоминается
if variable is None: print 'Is None'
if variable is not None: variable.property
variable.property if variable is not None else None
Автор решения: nomnoms12
→ Ссылка
Синтаксической конструкции нет. Но вы можете использовать функцию getattr, чтобы добиться такого же поведения:
bar = getattr(foo, 'bar', None)
А у словарей существует метод get:
foo = {}
foo.get('bar')
Автор решения: Danis
→ Ссылка
Если вы хотите чтобы такое поведение имел ваш класс, то можно реализовать метод __getattr__:
class A:
def __getattr__(self, attr):
return None
print(A().bar)