Есть ли в 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)
→ Ссылка