跳转到主要内容

生产级别的'Min'和'Max'对象(根据PEP 326改编)

项目描述

peak.util.extremes模块提供了一个生产级别的PEP 326中MinMax对象的实现。虽然PEP 326被拒绝包含在语言或标准库中,但其中描述的对象在各种应用中非常有用。在PEAK中,它们被用来实现通用函数(在RuleDispatch和PEAK-Rules中),以及处理Trellis中的调度和时间操作。因为这导致每个项目复制相同的代码,所以我们现在将其模块分离出来,以便可以独立使用。

一些简单的使用示例

>>> from peak.util.extremes import Min, Max
>>> import sys

>>> Min < -sys.maxint
True
>>> Min < None
True
>>> Min < ''
True
>>> Max > sys.maxint
True
>>> Max > 99999999999999999
True

>>> type(Min)
<class 'peak.util.extremes.Extreme'>

Min对象与其他任何对象比较都小于它自己,而Max对象与其他任何对象比较都大于它自己。它们都是Extreme类型的实例。

虽然这些极值原始PEP 326实现比这里使用的版本更短,但它包含一个缺陷:它没有正确处理与经典类实例的比较。因此,这个版本定义了所有六个丰富比较运算符的方法,以确保对经典以及新式类的正确支持

>>> Max >= Min and Max > Min and Max==Max and Max!=Min
True
>>> Max < Min or Max <= Min or Max==Min or Max!=Max
False

>>> Min <= Max and Min < Max and Min==Min and Min!=Max
True
>>> Min > Max or Min >= Max or Min==Max or Min!=Min
False

>>> class X:
...     """Ensure rich comparisons work correctly with classic classes"""

>>> x = X()

>>> Min<x<Max and Min<=x<=Max and Min!=x!=Max and Max!=x!=Min
True

>>> Min>x or x>Max or x<=Min or x>=Max or x==Min or Min==x
False

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分布

Extremes-1.1.1.zip (10.4 kB 查看哈希值)

上传于 源代码

由以下支持