Атрибуты класса и экземпляра изначально неупорядочены, поскольку они хранятся в словаре.
Есть несколько вариантов:
1) классы, определенные с помощью __slots__
, не используют словарь, и пространство для атрибутов предварительно выделяется. Я предполагаю, что атрибуты, следовательно, упорядочены, поэтому в принципе должна быть возможность вывести данные. Однако существуют проблемы с использованием слотов, и это не рекомендуется.
2) добавить атрибут класса list / tuple в класс с порядком атрибута.
3) использовать объект collection.namedtuple для хранения атрибутов. Именованный кортеж - это кортеж, в котором вы можете давать имена элементам, и поэтому он похож на структуру C. Это будет работать только с Python 2.6 и выше. Поскольку кортежи являются неизменяемыми, вы не сможете изменять созданные атрибуты - это может быть или не быть проблемой в зависимости от класса.
Edit:
Отражение __slots__
не сработает, поскольку я думаю, что они применяются только к экземплярам, а не к атрибутам класса.