我正在编写一个 python 类,它充当不可变的无限序列。
该类不使用生成器来访问这个无限序列,而是根据方法中的算法为序列中的任意索引生成一个值__getitem__
。
我很好奇处理__len__
这种对象的方法的最佳方法是什么。理想情况下,我会float("inf")
通过__len__
. 但是,在后台len()
调用对象方法的函数需要一个特定的值。__len__
如果__len__
设置为返回 float("inf") 或 decimal.Decimal("Infinity"),len()
则通过引发 TypeError 来拒绝它。它还拒绝“-1”的值,这意味着序列是无限的。此外,当我尝试使用我之前编写的实际上确实继承自的无穷大类时int
,len()
无论出于何种原因返回 0。
虽然允许值只是“0”并不是一个主要的不便,虽然这样的类非常不寻常,但我仍然很想知道,有没有一种处理类的长度属性的好方法那是一个无限序列?