typing.Any
的文档说
3.11 版更改:Any 现在可以用作基类。这对于避免类型检查器错误非常有用,这些类可以在任何地方躲避类型或高度动态。
这试图避免什么样的错误?一开始我以为心里的情况是
class Foo:
def __getattr__(self, attr: str) -> typing.Any:
if attr == 'bar':
return 5
raise AttributeError(attr)
def print_bar(foo: Foo) -> None:
print(foo.bar)
但是,使用 Python 3.10.6 的 mypy 0.971 不会产生任何错误。