Допустим, есть абстрактный класс:
import abc
from pydantic import BaseModel
class Abstract(abc.ABC):
context_class: ClassVar[Type['BaseModel']]
error: ClassVar[Type[Exception]]
def __init__(self, data: Dict) -> None:
self.context = self.context_class(**data)
@abc.abstractmethod
def process(self) -> None:
pass
И есть его наследник, в котором атрибут `context_class` переопределен наследником `BaseModel`:
class Context(BaseModel):
email: str
class Concrete(Abstract):
context_class = Context
def process(self) -> None:
print(self.context.email)
При запуске Mypy - падает ошибка:
... error: "BaseModel" has no attribute "email"
как правильно указать тип в абстрактном классе?
Уточнение:
Python 3.8.2
Mypy 0.770
Pydantic 1.6.1