Mypy 类型检查器和 "static instances"

Mypy type checker and "static instances"

对于我写的 class A,有一些实例 foobar 我想通过 A.fooA.bar 作为 class 变量。但是,foobar 都是 A 的实例,我不确定如何让类型检查器 mypy 正确处理它。我目前实例化 foobar 如下:

class A:
  def __init__(self):
    pass

  foo = None
  bar = None

A.foo = A()
A.bar = A()

这导致 mypy 得出 A.fooA.bar 属于 None 类型的结论。注释为 Optional[A] 会起作用,但这歪曲了意图:我希望两者都是 A 类型...有什么提示吗?

如果您使用的是 python 3 的更高版本,您可以使用注释为您完成此操作。

foo : A

我认为 mypy 使用标准注释。如果这不起作用,请尝试用引号将注释括起来。

foo : "A"