Да, но реализация зависит от версии питона
-> Any
Пиздец
class Adapter(IAdapter): __orm_model = None __domain_model = None def to_orm_model(self, domain_model) -> Type[__orm_model]: orm_model = self.__orm_model() attributes = vars(domain_model) for (attr_name, attr_value) in attributes.items(): setattr(orm_model, attr_name, attr_value) return orm_model def to_domain_model(self, orm_model) -> Type[__domain_model]: domain_model = self.__domain_model() attributes = vars(orm_model) for (attr_name, attr_value) in attributes.items(): setattr(domain_model, attr_name, attr_value) return domain_model class UserAdapter(Adapter): __orm_model = OrmUser __domain_model = DomainUser Вот код, мне не нужен Any. Мне необходим конкретный экземпляр класса на выходе при использовании той или иной реализации адаптера.
Не слушай этого долбана
@Tishka17 чат не осилил, может ты подскажешь?
абсолютно бессмысленный код
Не знаю насчет бессмысленности, но от него пахнет Java...
Почему он бессмысленный? Позже добавлю проверку на совпадение атрибутов и всё.
Создал адаптер, дальше просто буду добавлять реализации по необходимости и не нужно каждый раз под новые модели всё писать
предположим что у нас есть две модели алхимии или что там у тебя class User(Base): id: int class Product(Base): id: int updated_at: datetime owner_id: int = mapped_columnt(ForeignKey(User.id)) owner: User = relation(User) И есть модель пидантика/датакласс или что там у тебя @dataclass class User: uid: int @dataclass class Product: id: int owner: User как твой класс одно в другое сконевретирует?
Соглашусь, что адаптер костыльный вышел и весь зависим от него будет. Какая аналогия есть? Object -> Json?
убрать дженерик и написать руками под каждый тип
Я собственно этого и хотел избежать. Спасибо что объяснил😁, иначе бы в будущем возникло у меня не мало проблем.
Напиши штук 5, посомтри что будет. Если будут одинаковые - может быть вернешь текущее решение, но не глобально, а точечно
Решение оставлю, а там видно будет, но с расчётом на будущее текущих моделей она и в правду уже не подходит.
DRY губит людей. :-)
Тишка спасает
Обсуждают сегодня