Для меня getattr проще всего объяснить следующим образом:
Позволяет вам вызывать методы на основе содержимого строки вместо ввода имени метода.
Например , вы не можете этого сделать:
obj = MyObject()
for x in ['foo', 'bar']:
obj.x()
, поскольку x не относится к типу «builtin», а «str». Однако вы можете это сделать:
obj = MyObject()
for x in ['foo', 'bar']:
getattr(obj, x)()
Он позволяет динамически подключаться к объектам на основе вашего ввода. Я нашел это полезным при работе с пользовательскими объектами и модулями.