1. ホーム
  2. python

[解決済み] len()と.__len__()の違い?

2022-03-04 07:45:28

質問

の呼び出しに違いはあるのでしょうか? len([1,2,3]) または [1,2,3].__len__() ?

目に見える違いがないのであれば、裏では何が違っているのでしょうか?

解決方法は?

len は、コレクションの長さを取得する関数です。この関数は、オブジェクトの __len__ メソッドを使用します。 __something__ 属性は特別なもので、通常は見た目以上のものであり、一般に直接呼び出すべきではありません。

昔、何かの長さを取得するのは、メソッドコードではなく関数であるべきだと判断されたことがあります。 len(a) の意味は初心者にもわかりやすいが a.len() は、それほど明確ではないでしょう。Pythonが始まったとき __len__ は存在すらしていなかったし len は、数種類のオブジェクトで動作する特殊なものでした。この状況が完全に理にかなっているかどうかは別として、この状況は今後も続くでしょう。