Ответ
В DevOps-скриптах на Python для интроспекции и автоматической документации иногда требуется получить атрибуты класса в определённом порядке. Для этого можно использовать vars() или dir() в сочетании с sorted().
Основные методы:
-
vars()— возвращает__dict__класса, содержащий только пользовательские атрибуты (без унаследованных и магических).class ServiceConfig: port = 8080 name = "api-service" version = "1.0" timeout = 30 # Сортировка по имени атрибута sorted_attrs = sorted(vars(ServiceConfig).items()) for key, value in sorted_attrs: if not key.startswith('__'): print(f'{key}: {value}') # Вывод: # name: api-service # port: 8080 # timeout: 30 # version: 1.0 -
dir()— возвращает список всех имён атрибутов, включая унаследованные и магические методы. Требует фильтрации.# Фильтрация и сортировка только пользовательских атрибутов user_attrs = sorted([attr for attr in dir(ServiceConfig) if not attr.startswith('__')]) print(user_attrs) # ['name', 'port', 'timeout', 'version']
Практическое применение в DevOps:
- Генерация конфигурационных файлов (например, для Ansible или Terraform) из классов-моделей с упорядоченными полями.
- Создание автоматических отчётов о конфигурации сервисов.
- Сериализация объектов с предсказуемым порядком полей в JSON/YAML для лучшей читаемости в системах версионирования.