と を呼び出すことに何か違いはありますlen([1,2,3])
か[1,2,3].__len__()
?
目に見える違いがない場合、舞台裏では何が異なっているのでしょうか?
ベストアンサー1
len
__len__
コレクションの長さを取得する関数です。オブジェクトのメソッドを呼び出すことで機能します。__something__
属性は特別なものであり、通常は見た目以上の意味を持つため、通常は直接呼び出すべきではありません。
かなり昔のある時点で、何かの長さを取得するのは関数であってメソッド コードではないと決定されました。その理由は、そのlen(a)
意味は初心者には明らかですが、それほどa.len()
明確ではないからです。Python が始まったときには__len__
存在すらしておらず、len
いくつかの種類のオブジェクトで動作する特別なものでした。これが私たちに残す状況が完全に理にかなっているかどうかは別として、それはここに残ります。