Метод hasattr() в Python проверяет и возвращает True, если указанный объект имеет указанный атрибут, иначе False.

Что такое hasattr() в Python?
hasattr() в Python — это встроенная служебная функция, которая возвращает True, если объект имеет заданный именованный атрибут; в противном случае возвращается False. См. следующий синтаксис.
|
1 |
hasattr(object, name) |
- Object: чей именованный атрибут должен быть проверен.
- Name: относится к имени атрибута для поиска.
Функция hasattr() возвращает два типа значений:
- True : если объект имеет указанный именованный атрибут.
- False : если у объекта нет указанного именованного атрибута.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# Declaring the class class Student: name = "Debasis" age = 20 sex = "Male" # Initializing object of Student class std = Student() # Checking if the name attribute is present or not # This will return true print("Does class contains sex ?", hasattr(std, 'sex')) # This will return false print("Does class has height ?", hasattr(std, 'height')) |
Вывод:
|
1 2 |
Does class contains sex? True Does class has height? False |
Функцию можно использовать для проверки ключей, чтобы избежать ненужных ошибок в случае доступа к отсутствующим ключам. Цепочка hasattr() иногда используется для предотвращения ввода одного связанного атрибута, если другой отсутствует.
Функция Python hasattr() по сравнению с in
Преимущество функции hasattr() становится очевидным, когда значение атрибута определяется динамически, например, из пользовательского ввода. Мы не можем сделать то же самое с k в obj из-за динамической природы.
Давайте посмотрим на другой случай, когда мы попросим пользователя ввести значение атрибута, а затем используем hasattr(), чтобы проверить, существует ли он или нет, и действовать соответствующим образом.
Пример:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# app.py class Netflix: season = 0 name = '' def __init__(self, i, n): self.season = i self.name = n series = Netflix(3, 'StangerThings') data = input('\nPlease enter Netflix attribute to get details:\n') if hasattr(series, data): print(data, '=', getattr(series, data)) else: print('invalid netflix attribute') |
Смотрите вывод.
|
1 2 3 4 5 6 7 8 9 10 11 |
➜ pyt python3 app.py Please enter Netflix attribute to get details: name name = StangerThings ➜ pyt python3 app.py Please enter Netflix attribute to get details: season season = 3 ➜ pyt |
Заключение
Python hasattr() — это служебная функция для проверки наличия или отсутствия атрибута у объекта, прежде чем мы попытаемся использовать его в нашей программе.
Мы можем быстро реализовать функцию или использовать try-expect, чтобы иметь эту логику в нашей программе, но использование этой функции рекомендуется для чистого кода.
