Как уже говорили другие, встроенный getattr является правильным способом получения атрибута (обычно вы не обращаетесь к специальным методам Python напрямую: вы обращаетесь к ним через встроенные модули и операторы! ).
getattr
делает намного больше, чем поиск в __dict__
объекта: он поддерживает свойства и другие дескрипторы, атрибуты, унаследованные от класса и его баз (например, методы), атрибуты, которые могут динамически генерироваться с помощью __getattr__
метод (в классе объекта или, опять же, в одной из его баз). Точно так же, как прямой доступ model.title_en
, когда вы знаете имя во время написания кода (в этом случае, конечно, вы не будете использовать getattr
;-). Это делает его безусловно предпочтительным способом доступа к атрибуту, имя которого вы «узнаете» только динамически!