hasattr()
— это встроенная функция, используется для проверки, существует ли определенный атрибут у объекта, или нет и возвращает логическое значение.
Мы можем легко реализовать эту функцию или использовать команду try-expect, но рекомендуется использовать эту функцию, чтобы иметь чистый код.
Синтаксис функции:
hasattr(object, name)
Пояснение:
- Объектом может быть любой object, атрибут которого будет проверяться.
- Name должно быть строкой и именем проверяемого атрибута. Внутри эта функция вызывает
getattr(object, name)
и возвращает True. Если при вызове функцииgetattr()
произошла ошибка AttributeError, возвращается False. В противном случае возвращается True.
Давайте рассмотрим пример:
class Person:
def __init__(self, age, name):
self.age = age
self.name = name
person = Person(23, 'Vladislav')
if hasattr(person, 'name'):
print(getattr(person, 'name'))
Сравнение hasattr() и in
Преимущества hasattr()
можно увидеть, когда значение атрибута определяется динамически, например, когда оно получается из пользовательского ввода.
Пример с вводом на проверку атрибута:
class Person:
def __init__(self, age, name):
self.age = age
self.name = name
person = Person(23, 'Vladislav')
attr = input('\nPlease enter Person attribute to get details:\n')
if hasattr(person, attr):
print(attr, '=', getattr(person, attr))
else:
print('invalid person attribute')
Результат:
Please enter Person attribute to get details:
age
age = 23
Please enter Person attribute to get details:
name
name = Vladislav
Please enter Person attribute to get details:
test
invalid person attribute