~<type> 有什么作用?

Min*_*Po1 3 python type-hinting mypy python-typing

在编写代码时,我遇到过表达类型的 linter ~<type>(其中<type>类型不是<type>文学的)。一个例子是self

class A:
    def foo(self):
        reveal_type(self) # reveals "~A"
Run Code Online (Sandbox Code Playgroud)

我认为这意味着“A或”的子类A;但是,我在网上找不到任何有关它的信息。

另外,您不能在代码中使用以下语法:

a: ~A # raises an exception: TypeError: bad operand type for unary ~: 'type'
Run Code Online (Sandbox Code Playgroud)

如果a会被揭露的话那就是了Unknown

All*_*enT 5

查看源代码,如果 TypeVar 是协变的,则打印(repr)带有前导“+”,如果是逆变,则带有“-”,如果是不变(既不是协变也不是逆变)则带有“~”。