gpt4 book ai didi

python - 充当无限序列的对象的 __len__ 的正确返回值

转载 作者:太空狗 更新时间:2023-10-30 01:46:18 24 4
gpt4 key购买 nike

我正在编写一个充当不可变、无限序列的 python 类。

该类不使用生成器来访问这个无限序列,而是根据 __getitem__ 方法中的算法为序列中的任意索引生成一个值。

我很好奇处理此类对象的 __len__ 方法的最佳方式是什么。理想情况下,我会通过 __len__ 返回 float("inf")。但是,在后台调用对象的 __len__ 方法的 len() 函数需要一个特定的值。

如果 __len__ 设置为返回 float("inf") 或 decimal.Decimal("Infinity"),len() 会通过引发 TypeError 来拒绝它。它还拒绝“-1”的值,这意味着序列是无限的。此外,当我尝试使用我之前碰巧写过的无限类时,确实实际上继承自 intlen() 无论什么原因返回 0。

虽然允许值仅为“0”并不是什么大的不便,而且像这样的类很不寻常,但我仍然很想知道,是否有处理长度属性的好方法是一个无限序列的类?

最佳答案

__len__() 必须返回一个有效的整数。既然你不能,你不应该实现 __len__(),如果你的序列总是无限的,或者引发一个 ValueError 如果你有时可以给出一个有意义的长度。

关于python - 充当无限序列的对象的 __len__ 的正确返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34540405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com