类型提示这是一个子类
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)没有对上述情况给出建议,说明静态分析不识别SubSubFoo
是Foo
的子类型。我如何使用类型提示来指示这一点?
我从 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.
作为修复,我使用了一个习惯用法,每当我对 dynamic()
进行子类化时,我也会在之后对 Foo
进行子类化,这会导致在不改变程序逻辑的情况下出现所需的建议(即使它看起来有点奇怪)。
如何通过类型提示表明一个 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)没有对上述情况给出建议,说明静态分析不识别SubSubFoo
是Foo
的子类型。我如何使用类型提示来指示这一点?
我从 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.
作为修复,我使用了一个习惯用法,每当我对 dynamic()
进行子类化时,我也会在之后对 Foo
进行子类化,这会导致在不改变程序逻辑的情况下出现所需的建议(即使它看起来有点奇怪)。