Код: Выделить всё
from dataclasses import dataclass
@dataclass
class Foo_Data:
foo: int
class Foo_Processor:
def process(self, data: Foo_Data): ...
class Foo_Loader:
def load(self, file_path: str) -> Foo_Data: ...
#----------------------------------------------------------------
@dataclass
class Bar_Data:
bar: str
class Bar_Processor:
def process(self, data: Bar_Data): ...
class Bar_Loader:
def load(self, file_path: str) -> Bar_Data: ...
Я пробовал использовать абстрактные классы, но mypy правильно указывает, что все классы *_Data должны быть подклассы абстрактного класса Data, а также то, что все классы *_Processor являются подклассами абстрактного класса Processor, нарушает принцип подстановки Лискова, поскольку каждый процессор предназначен только для своего соответствующего класса Data (т. е. Foo_Processor< /code> не может обрабатывать Bar_Data, но можно было бы ожидать, что это возможно, если у этих классов есть суперклассы Processor и Data, которые совместимы таким образом).
Подробнее здесь: https://stackoverflow.com/questions/789 ... asses-in-p