Документация по Python. Теоретические материалы, и практические задачи

python getattr

Метод 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.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *