Любой альтернативный способ проверить, есть ли какой-либо атрибут в Python? - PullRequest
3 голосов
/ 30 января 2012
a = SomeClass()
if hasattr(a, 'property'):
        a.property

Это единственный способ проверить, есть ли недвижимость или нет? Есть ли другой способ сделать то же самое?

Ответы [ 3 ]

8 голосов
/ 30 января 2012

Вы можете просто использовать свойство и перехватить исключение AttributeError, если оно не существует.Но использование hasattr также является разумным подходом.

Потенциальная проблема с отловом исключения состоит в том, что вы не можете легко отличить атрибут, который не существует, и он существует, но когда вы вызываете его, запускается некоторый коди , что код вызывает AttributeError (возможно, из-за ошибки в коде).

Вы также можете обратиться к этим связанным вопросам для получения дополнительной информации по этой теме:

5 голосов
/ 30 января 2012

Ну, вы можете просто попытаться получить к нему доступ и поймать AttributeError, если его не существует.

try:
    a.foo
except AttributeError:
    ...
1 голос
/ 17 марта 2012

Вы также можете использовать:

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