注意:虽然接受的答案达到了我想要的结果,并且@ecatmur 答案提供了一个更全面的选项,但我觉得强调我的用例首先是一个坏主意非常重要。这在下面的 @Jason Orendorff 回答中 得到了很好的解释。
注意:这个问题不是 关于 sys.maxint
的问题 的重复。它与 sys.maxint
无关;即使在 sys.maxint
可用的 python 2 中,它也不代表最大整数(请参阅已接受的答案)。
I need to create an integer that’s larger than any other integer, meaning an int
object which returns True
when compared to any other int
object using >
。用例:库函数需要一个整数,强制执行某种行为的唯一简单方法是传递一个非常大的整数。
在 python 2 中,我可以使用 sys.maxint
(编辑:我错了)。在 python 3 中, math.inf
是最接近的等价物,但我无法将其转换为 int
。
原文由 max 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于 python 整数是无界的,因此您必须使用自定义类来执行此操作:
在这里,我使用了混合类
NeverSmaller
而不是直接修饰ReallyMaxInt
,因为在 Python 3 上,functools.total_ordering
7463b68b839e05d8149c61279-a-030fe 的操作会被现有的阻止从int
继承的排序方法。使用演示:
请注意,在 python2 中,
sys.maxint + 1
大于sys.maxint
,所以你不能依赖它。_免责声明_:这是 OO 意义上的整数,不是数学意义上的整数。因此,从父类
int
继承的算术运算可能不合理。如果这会导致您的预期用例出现任何问题,则可以通过实施__add__
来禁用它们,朋友们只需出错即可。