Метод get () для проверки атрибутов Python

Если бы у меня был словарь, dictи я хотел бы проверить его, dict['key']я мог бы сделать это в tryблоке (bleh!) Или использовать get()метод со Falseзначением по умолчанию.

Я хотел бы сделать то же самое для object.attribute. То есть у меня уже есть объект для возврата, Falseесли он не был установлен, но тогда это дает мне такие ошибки, как

AttributeError: объект 'bool' не имеет атрибута 'attribute'

10.12.2008 09:49:39
3 ОТВЕТА
РЕШЕНИЕ

Более прямой аналог, dict.get(key, default)чем hasattrесть getattr.

val = getattr(obj, 'attr_to_check', default_value)

(Где default_valueнеобязательно, вызывая исключение для атрибута, если не найден.)

Для вашего примера вы бы прошли False.

118
9.09.2014 05:48:09

Вы имеете в виду, hasattr()возможно?

hasattr(object, "attribute name") #Returns True or False

Python.org doc - встроенные функции - hasattr ()

Вы также можете сделать это, что немного более загромождено и не работает для методов.

"attribute" in obj.__dict__
19
9.09.2014 05:48:15

Для проверки , если ключ находится в словаре , вы можете использовать in: 'key' in dictionary.

Для проверки атрибутов в объекте используйте hasattr()функцию:hasattr(obj, 'attribute')

7
10.12.2008 10:01:28
Единственный ответ, который касается того факта, что оба варианта проверки dict, представленные OP, являются Bleh!
Mad Physicist 9.02.2017 16:01:33