如何正确注释 operator.gt 的类型?

How to correctly annotate type for operator.gt?

我得到了以下代码:

from typing import List
import operator


class A:

    def __init__(self, x: int) -> None:
        self.x = x

    def __gt__(self, other: "A") -> int:
        return 0 if self.x > other.x else -1


lst: List[A] = []
sorted(lst, key=operator.gt)

现在的问题是 mypy 会抱怨:

Argument "key" to "sorted" has incompatible type "Callable[[Any, Any], Any]"; expected "Optional[Callable[[A], Any]]"

我假设 operator.gt 显然是这样注释的。

我的问题是,我怎样才能以这样一种方式进行注释,即 lst 也是一个 List[A],并且 mypy 不会抱怨 operator.gt ]?

这与 mypy 以及带有 keyoperator.gt 签名的所有内容无关:运算符采用两个参数(要比较的两个参数),而 key 采用单个参数来转换元素。

换句话说:问题不是A vs. Any,而是[foo] vs [foo, foo].

你想用这个关键功能实现什么?