Метод python getattr — возвращает значение атрибута объекта. Если он не найден, метод getattr() вернет значение по умолчанию, которое предоставляется функцией getattr().
class Student:
marks = 88
name = 'Sheeran'
person = Student()
name = getattr(person, 'name')
print(name)
marks = getattr(person, 'marks')
print(marks)
# Результат: Sheeran
# 88
Параметры метода getattr()
Метод getattr() принимает несколько аргументов:
- object — непосредственно сам объект, значение атрибута которого, необходимо вернуть
- name — строка, которая содержит имя атрибута
- default — опциональный необязательный аргумент, возвращает значение, если атрибут не найден
Возвращаемые значение метода getattr()
Метод getattr() возвращает следующее:
- Значение именованного атрибута
- default — значение установленное по умолчанию, которое возвращается в случае если именованный атрибут не найден
- AttributeError — Ошибка исключения, в случае если атрибут не найден, и так же не указано значение по умолчанию
Ниже разберем два небольших примера, в целом как работает метод getattr() и то, как работает данный метод, если атрибут не найден.
Пример 1. Как работает метод getattr()?
class Person:
age = 23
name = "Adam"
person = Person()
print('The age is:', getattr(person, "age"))
print('The age is:', person.age)
#Результат
The age is: 23
The age is: 23
Пример 2. Как работает getattr() если атрибут не обнаружен?
class Person:
age = 23
name = "Adam"
person = Person()
# В случае, если указано значение по умолчанию
print('The sex is:', getattr(person, 'sex', 'Male'))
# Если не указано значение по умолчанию
print('The sex is:', getattr(person, 'sex'))
#Результат
The sex is: Male
AttributeError: 'Person' object has no attribute 'sex'
- Атрибут sex отсутствует в классе Person, но при вызове метода getattr() было указано значение по умолчанию, соответственно, мы получаем данное значение Male.
- Во втором варианте, мы не указали значение по умолчанию, соответственно срабатывает ошибка исключения AttributeError, который сообщает нам о том, что у данного объекта отсутствует атрибут sex.