Код: Выделить всё
from abc import ABC, abstractmethod
from typing import Generic, TypeVar
class TobeProcessed(ABC):
pass
TobeProcessedType = TypeVar("TobeProcessedType", bound=TobeProcessed)
class Processor(ABC, Generic[TobeProcessedType]):
@abstractmethod
def process(self, to_be_processed: TobeProcessedType) -> None:
pass
Код: Выделить всё
class TobeProcessedConcrete(TobeProcessed):
pass
class ProcessorConcrete(Processor[TobeProcessedConcrete]):
def process(self, to_be_processed: TobeProcessedConcrete) -> None:
return None
Код: Выделить всё
class WrapperClass:
processor: Processor
def __init__(self, processor: Processor) -> None:
self.processor = processor
processor = ProcessorConcrete()
wrapper = WrapperClass(processor=processor)
Код: Выделить всё
Argument "processor" to "WrapperClass" has incompatible type "ProcessorConcrete"; expected "Processor[TobeProcessed]"
Есть ли способ сделать это без ошибок и не делая mypy менее строгим?
Подробнее здесь: https://stackoverflow.com/questions/775 ... base-class