len() と .__len__() の違いは何ですか? 質問する

len() と .__len__() の違いは何ですか? 質問する

と を呼び出すことに何か違いはありますlen([1,2,3])[1,2,3].__len__()?

目に見える違いがない場合、舞台裏では何が異なっているのでしょうか?

ベストアンサー1

len__len__コレクションの長さを取得する関数です。オブジェクトのメソッドを呼び出すことで機能します。__something__属性は特別なものであり、通常は見た目以上の意味を持つため、通常は直接呼び出すべきではありません。

かなり昔のある時点で、何かの長さを取得するのは関数であってメソッド コードではないと決定されました。その理由は、そのlen(a)意味は初心者には明らかですが、それほどa.len()明確ではないからです。Python が始まったときには__len__存在すらしておらず、lenいくつかの種類のオブジェクトで動作する特別なものでした。これが私たちに残す状況が完全に理にかなっているかどうかは別として、それはここに残ります。

おすすめ記事