Метод get () для проверки атрибутов Python - PullRequest
67 голосов
/ 10 декабря 2008

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

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

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

Ответы [ 3 ]

106 голосов
/ 10 декабря 2008

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

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

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

Для вашего примера вы должны передать False.

17 голосов
/ 10 декабря 2008

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

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

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

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

"attribute" in obj.__dict__
7 голосов
/ 10 декабря 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...