Return type у classmethod в наследуемом классе

Имеется следующий код.

@dataclass
class A:
    x: int,
    y: str,

   @classmethod
   def _build_class(cls, x: int, y: str) -> Union['A', 'B']:
       return cls(x, y)

    @classmethod
    def build(cls, x: int, y: str) -> 'A':
        return cls._build_class(cls, x, y)

@dataclass
class B(A):
    
    @classmethod
    def build(cls, x: int, y: str) -> 'B'
        new_y = "Hello"
        return cls._build_class(cls, x, new_y)

При проверке mypy ругается на то, что return type метода _build_class() не совпадает с return type методов builď() в классах A и B.

Вопрос: какой должен быть return type у _build_class(), учитывая то, что метод должен возвращать или объект класса А, или объект класса B, (в зависимости от класса, внутри которого он был вызван)?


Ответы (0 шт):