假设我想编写一个比较排序函数,我可以提示输入必须是一个带有Sequence[T]
(在本例中是MutableSequence[T]
)的序列。在
from typing import MutableSequence, T
def comparison_sort(s: MutableSequence[T]) -> None:
pass
然而,似乎没有现成的方法来暗示T
必须具有可比性。(没有Comparable
或Ordered
或typing
中的任何内容。)我如何才能做到这一点?我希望避免指定一组特定的类型,比如int
,float
,'str`这样用户也可以暗示他们自己的类型是可比较的。在
如注释中所述,
Comparable
不是一种存在状态,它只作为一对类型的描述符才有意义。通常情况下,排序函数使用的是同构类型,因此只要您不介意类型检查器只处理“支持某些类型的<
”的概念,而不介意“使用任意类型支持<
”,您就可以定义自己的Comparable
,并用它绑定typing
TypeVar
。方便地,PEP484(它定义了typing
提示)已经提供了an example of how you'd do this:然后,您可以将其用于
^{pr2}$comparable_sort
定义:注意,我只需要定义}),所以用同样的方式设计自己的算法是个好主意,因此{}可以处理的任何事情,都可以用同样的方式处理。在
__lt__
;作为一个规则,Python完全按照__lt__
实现自己的排序函数(它不使用任何其他丰富的比较运算符,甚至不使用{相关问题 更多 >
编程相关推荐