Пишу сохранение истории изменения значений атрибутов модели алхимии. Перечень атрибутов, которые важны для истории, сохраняю в атрибуте класса history_attributes, при этом в целях удобства рефакторинга использую не строковые названия атрибутов, а сами дескрипторы.
from sqlalchemy import Integer, Column, String from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class HistoryAttribute: def __init__(self, descriptor, display_name, use_message=False): self.name = descriptor.name self.display_name = display_name self.use_message = use_message class User(Base): __tablename__ = 'user' id = Column(Integer, primary_key=True) first_name = Column(String(100)) email = Column(String(100)) history_attributes = ( HistoryAttribute(descriptor=first_name, display_name='User name'), email ) print(User.history_attributes[0].name) >>> None print(User.history_attributes[1].name) >>> email
Пока проблему обошел заменив в history_attributes HistoryAttribute на namedtuple, который уже потом и передаю в конструктор класса HistoryAttribute, но это как то сильно похоже на костыль