Python getattr() — это встроенный метод, который возвращает значение именованного атрибута объекта. Если он не найден, он возвращает значение по умолчанию, предоставленное функции. Функция getattr() возвращает значение указанного атрибута из указанного объекта.

Что такое getattr() в Python?
Метод getattr() в Python используется для доступа к значению атрибута объекта, а также дает возможность выполнить значение по умолчанию в случае недоступности ключа.
Синтаксис и параметры
|
1 |
getattr(object, attribute, default) |
- Параметр object является обязательным, и это объект.
- attribute — это имя атрибута, из которого вы хотите получить значение.
- Параметр default является необязательным и возвращает значение, если атрибут не существует.
См. следующий пример кода.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# app.py class StrangerThings: name = "Eleven" age = 11 country = "USA" name = getattr(StrangerThings, 'name') age = getattr(StrangerThings, 'age') country = getattr(StrangerThings, 'country') print(name) print(age) print(country) |
Вывод:
|
1 2 3 4 5 |
➜ pyt python3 app.py Eleven 11 USA ➜ pyt |
Функция getattr() с объектом
Давайте возьмем пример, в котором мы создаем объект, а затем получаем доступ к его свойствам с помощью функции getattr().
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# app.py class StrangerThings: name = "Eleven" age = 11 country = "USA" duffers = StrangerThings() print(getattr(duffers, 'name')) print(getattr(duffers, 'age')) print(getattr(duffers, 'country')) |
Итак, мы создали объект с именем duffers, а затем использовали функцию getattr() для получения всех значений атрибутов.
Значение по умолчанию
Давайте добавим значение по умолчанию в функцию getattr().
|
1 2 3 4 5 6 7 8 9 10 11 |
# app.py class StrangerThings: name = "Eleven" age = 11 country = "USA" duffers = StrangerThings() print(getattr(duffers, 'catchphrase', 'Friends Don\'t lie')) |
В приведенном выше коде мы указали значение по умолчанию для свойства catchphrase.
См. следующий вывод.
|
1 2 3 |
➜ pyt python3 app.py Friends Don't lie ➜ pyt |
Допустим, мы не предоставляем значение по умолчанию для нового свойства, которого нет в объекте, и видим результат.
|
1 2 3 4 5 6 7 8 9 10 11 |
# app.py class StrangerThings: name = "Eleven" age = 11 country = "USA" duffers = StrangerThings() print(getattr(duffers, 'catchphrase')) |
Вывод:
|
1 2 3 4 5 6 |
➜ pyt python3 app.py Traceback(most recent call last): File "app.py", line 9, in <module> print(getattr(duffers, 'catchphrase')) AttributeError: 'StrangerThings' object has no attribute 'catchphrase' ➜ pyt |
Это означает, что у объекта StrangerThings нет ключевой фразы атрибута. Так мы не можем получить его значение, которого даже не существует.
Если мы не предоставляем какое-либо значение по умолчанию, когда ключевая фраза именованного атрибута не найдена, возникает ошибка AttributeError, говорящая, что у объекта нет атрибута ключевой фразы. Итак, используйте параметр default, чтобы написать сообщение, когда атрибут не существует.
