类型提示这是一个子类

Type Hint that this is a Subclass

如何通过类型提示表明一个 class 是另一个的子class?例如。

class Foo:
  def foo(self, x):
    pass

def dynamic() -> Type[Foo]:
  class SubFoo(Foo):
    pass

  return SubFoo

class SubSubFoo(dynamic()):
  def f|  # no suggestions from my editor

我的编辑器(PyCharm)没有对上述情况给出建议,说明静态分析不识别SubSubFooFoo的子类型。我如何使用类型提示来指示这一点?

我从 JetBrains 那里得到了一个答案,表明这是 PyCharm 的限制,而不是类型提示的限制或滥用:

In this particular case it's IDE limitation, we don't look inside dynamic() function as it may be a lot more complex.

-Andrey Resler

作为修复,我使用了一个习惯用法,每当我对 dynamic() 进行子类化时,我也会在之后对 Foo 进行子类化,这会导致在不改变程序逻辑的情况下出现所需的建议(即使它看起来有点奇怪)。