"<type>"是什么作用?

3

在编写代码时,我遇到了我的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
2个回答

5

查看源代码,如果TypeVars是协变的,则在其前面带有"+"号;如果是逆变的,则带有"-"号;如果既不是协变也不是逆变,则带有"~"号(即不变)。


2

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

在函数内部,self的类型会被打印出来,并在类名前加上波浪号。这表示该类型是TypeVar,而不是类本身。

因此,我认为Mypy使用的~Classname是相同的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接