tre*_*kby 4 python infinite python-datamodel
我正在编写一个python类,它充当一个不可变的无限序列.
该类不使用生成器来访问此无限序列,而是根据__getitem__方法中的算法为序列中的任意索引生成值.
我很好奇处理__len__这种对象的方法的最佳方法是什么.理想情况下,我会回过头float("inf")来__len__.但是,在幕后len()调用对象__len__方法的函数需要一些特定的值.
如果__len__设置为返回float("inf")或decimal.Decimal("Infinity"),len()则通过引发TypeError来拒绝它.它还拒绝"-1"的值,这意味着序列是无限的.此外,当我试图用一个无边类,我碰巧早前撰文指出,确实在事实上继承int,len()无论出于何种原因返回0.
虽然让值只是"0"并不是一个很大的不便,虽然像这样的类很不寻常,但我仍然很想知道,有没有一种很好的方法来处理类的长度属性那是一个无限的序列?
__len__()必须返回一个有效的整数.既然你不能,你应该不实现__len__(),如果你的序列总是无限的,或者ValueError如果你有时可以给出一个有意义的长度,你应该提出.