【问题标题】:What does ~<type> do?~<type> 做什么?
【发布时间】:2021-11-28 17:33:13
【问题描述】:

在编写代码时,我遇到了表达 ~&lt;type&gt; 类型的 linter(其中 &lt;type&gt; 不是 &lt;type&gt;literature 的类型)。 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

【问题讨论】:

    标签: python type-hinting mypy python-typing


    【解决方案1】:

    查看source code,如果 TypeVar 是协变的,则打印 (repr),如果它们是协变的,则使用前导“+”,如果是逆变的,则使用“-”,如果是不变的(既不协变也不逆变),则以“~”开头。

    【讨论】:

      【解决方案2】:

      我在 Mypy 文档中找不到它,但 Pyright 看起来很相似,它的 documentation 说:

      在函数中,self 的类型会在类名之前打印一个波浪号。这表明该类型是绑定到类而不是类本身的 TypeVar。

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

      【讨论】:

        猜你喜欢
        • 2020-12-31
        • 2016-10-24
        • 1970-01-01
        • 1970-01-01
        • 2019-07-19
        • 2019-05-10
        • 2011-03-11
        • 1970-01-01
        • 2015-04-15
        相关资源
        最近更新 更多