不変の無限シーケンスとして機能する python クラスを作成しています。
このクラスは、ジェネレータを使用してこの無限シーケンスにアクセスするのではなく、メソッド内のアルゴリズムに従って、シーケンス内の任意のインデックスの値を生成します__getitem__
。
__len__
そのようなオブジェクトのメソッドを処理する最良の方法は何なのか興味があります。理想的には、私はそのまま戻っfloat("inf")
てき__len__
ます。ただし、バックグラウンドでlen()
オブジェクトのメソッドを呼び出す関数には、ある程度特定の値が必要です。__len__
__len__
float("inf") または decimal.Decimal("Infinity") を返すように設定されている場合len()
、TypeError を発生させて拒否します。また、シーケンスが無限であることを意味する "-1" の値も拒否します。さらに、たまたま以前に書いた無限クラスを使ってみたところ、実際にはから継承されint
、len()
何らかの理由で 0 が返されました。
値を「0」にすることは大きな不便ではありませんが、このようなクラスは非常に珍しいものですが、クラスの長さ属性を処理する良い方法はありますか?それは無限のシーケンスですか?