~<type>有什么作用?



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

class A:
def foo(self):
reveal_type(self) # reveals "~A"

我认为这意味着"AA的子类;但是,我在网上找不到关于它的任何信息。

同样,你不能在代码中使用这种语法:

a: ~A # raises an exception: TypeError: bad operand type for unary ~: 'type'

如果a透露这将是Unknown

查看源代码,TypeVars被打印(repr),并以"+"如果它们是协变的,如果逆变,"~";如果不变(既不是协变也不是逆变)

我在Mypy文档中找不到它,但Pyright似乎类似,它的文档说:

在函数中,self的类型被打印出来,并在类名前面加一个波浪号。这表明类型是绑定到类的TypeVar,而不是类本身。

所以我认为我对~Classname的使用是一样的。

最新更新