您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

我怎样才能暗示一种类型与打字可比

我怎样才能暗示一种类型与打字可比

如注释中所述,Comparable这不是存在的状态,它仅作为一对类型的描述符才有意义。通常情况下,一个排序功能正在与同质类型的,所以只要你不介意的类型检查只是处理的“支持的概念<与某些类型的”,而不是“支持<任意类型”,您可以定义自己Comparable和绑定一个typingTypeVar。方便地,PEP484(定义了typing提示)已经提供了如何执行此操作的示例

from abc import ABCMeta
from typing import Any, TypeVar

class Comparable(Metaclass=ABCMeta):
    @abstractmethod
    def __lt__(self, other: Any) -> bool: ...

CT = TypeVar('CT', bound=Comparable)

然后,您可以将其用于comparable_sort定义:

def comparable_sort(s: MutableSequence[CT]) -> None:

注意,我只需要__lt__定义即可;通常,Python 3完全根据__lt__(不使用任何其他丰富的比较器运算符,甚至不使用?__eq__)来实现自己的排序功能,所以以相同的方式设计自己的算法是一个好主意,因此可以处理,您可以以相同的方式处理。sorted

?:Python 2最初__le__在至少一个地方(heapq)使用,但是__lt__在Python 3时间范围内,有意地,始终如一地使用了内置函数和标准库,并且您的键入样式始终是Python 3。

其他 2022/1/1 18:48:39 有521人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶