Правильное аннотирование вывода унаследованной функции класса с помощью mypy

#python #inheritance #type-hinting #mypy

#питон #наследование #тип-намек #майпи

Вопрос:

У меня есть модуль, который выглядит следующим образом:

 from copy import deepcopy  class TestClassA():   def test_function_a(self) -gt; "TestClassA":  return self  class TestClassB(TestClassA):   @property  def __copy__(self) -gt; "TestClassB":  return deepcopy(self)   def test_function_b(self) -gt; "TestClassB":  b = self.__copy__  c = b.test_function_a()  print(c)  return c   a = TestClassB() a.test_function_b()  

когда я запускаю это, консоль распечатывается lt;__main__.TestClassB object at lt;locationgt;gt; . Однако оценка этого с помощью mypy возвращает ошибку

 Incompatible return value type (got "TestClassA", expected "TestClassB")  

В подобных случаях, должен ли вывод test_function_a быть объединением[«TestClassA», «TestClassB»], или есть другой способ аннотирования этого модуля?