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.