Метод get() для проверки атрибутов Python
Если у меня был словарь dict
, и я хотел проверить его на dict['key']
, я мог бы сделать это в блоке try
(bleh!) или использовать метод get()
, с False
в качестве значения по умолчанию значение.
Я хотел бы сделать то же самое для object.attribute
. То есть у меня уже есть объект для возврата False
, если он не был установлен, но тогда это дает мне такие ошибки, как
AttributeError: объект 'bool' не имеет атрибута 'attribute'
Ответы
Ответ 1
Более прямой аналог dict.get(key, default)
чем hasattr
равен getattr
.
val = getattr(obj, 'attr_to_check', default_value)
(Где default_value
является необязательным, создавая исключение без атрибута, если не найден.)
В вашем примере вы пройдете False
.
Ответ 2
Вы имеете в виду hasattr()
возможно?
hasattr(object, "attribute name") #Returns True or False
Python.org doc - Встроенные функции - hasattr()
Вы также можете сделать это, что немного более загромождено и не работает для методов.
"attribute" in obj.__dict__
Ответ 3
Для проверки наличия ключа в словаре вы можете использовать in
: 'key' in dictionary
.
Для проверки атрибутов в объекте используйте функцию hasattr()
: hasattr(obj, 'attribute')