Установка псевдонима на основе типа общего поляPython

Программы на Python
Anonymous
Установка псевдонима на основе типа общего поля

Сообщение Anonymous »

Я создаю иерархию объектов, чтобы упростить преобразование в XML и обратно. У меня есть три класса, назовите их A, B и C. У меня также есть D, который выглядит так:

Код: Выделить всё

from typing import List, TypeVar, Generic, Union
from pydantic import Field, BaseModel

P = TypeVar("P", bound=Union[A, B, C])

class D(BaseModel, Generic[P]):

data: List[P] = Field(alias="Data")
Это отлично подойдет для хранения данных, но проблема в том, что я хотел бы установить для псевдонима другое значение, в зависимости от того, какой P
код> есть. Например, я бы хотел, чтобы это был DataA, если тип класса — D[A].
Я натыкаюсь на пределы своего Здесь я понимаю библиотеку типизации Python и Pydantic, поэтому я не совсем уверен, что это возможно. Возможно, мне нужно вместо этого использовать фабрику? Если у кого-нибудь есть идеи, как это сделать, я буду очень признателен.

Подробнее здесь: https://stackoverflow.com/questions/781 ... eric-field

Вернуться в «Python»