首页 > 解决方案 > 如何正确注释 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会抱怨:

“sorted”的参数“key”具有不兼容的类型“Callable[[Any, Any], Any]”;预期“可选[可调用[[A],任何]]”

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

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

标签: pythonpython-3.xmypytype-hinting

解决方案


这与andmypy的签名无关:运算符接受两个参数(要比较的两个事物),而接受一个用于转换元素的参数。keyoperator.gtkey

换句话说:问题不在于Avs. ,Any而在于[foo]vs.[foo, foo]

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


推荐阅读