getattr()

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

Сигнатура

getattr(object, name)
getattr(object, name, default)

Параметры:

  • object — объект, у которого читается атрибут.

  • name — имя атрибута (строка).

  • default — значение, возвращаемое при отсутствии атрибута. Если не указано, будет возбуждено AttributeError.

Возвращает: значение атрибута или default.

Примеры

Простое чтение атрибута:

class Robot:
    speed = 100
    name = "Phobo"

r = Robot()
print(getattr(r, "name"))
print(getattr(r, "speed"))
Phobo
100

Использование значения по умолчанию:

class Sensor:
    pin = 9

s = Sensor()
print(getattr(s, "value", "no data"))
no data

Без default — ловим исключение:

class Empty:
    pass

e = Empty()
try:
    getattr(e, "missing")
except AttributeError as err:
    print("error:", err)
error: 'Empty' object has no attribute 'missing'

Динамический вызов метода:

class Calc:
    def add(self, a, b):
        return a + b
    def mul(self, a, b):
        return a * b

c = Calc()
op = "mul"
method = getattr(c, op)
print(method(4, 5))
20

Чтение настроек из модуля по имени:

import math
for attr in ("pi", "e", "tau"):
    print(attr, "=", getattr(math, attr))
pi = 3.141592653589793
e = 2.718281828459045
tau = 6.283185307179586

См. также

Примечание

Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.