1. ホーム
  2. パイソン

[解決済み】なぜPythonコードはlengthメソッドの代わりにlen()関数を使用するのですか?

2022-04-06 14:46:58

質問

パイソンには len() という関数がありますが、なぜ文字列オブジェクトのメソッドとして存在しないのか不思議に思っていました。

更新情報

OK、恥ずかしながら勘違いしていたことに気づきました。 __len__() は、実は文字列オブジェクトのメソッドなのです。Pythonのオブジェクト指向のコードで、文字列オブジェクトにlen関数を使うのはおかしいと思うのです。さらに __len__ という名前にしました。

どのように解決するのですか?

文字列には length メソッドがあります。 __len__()

Pythonのプロトコルは、長さを持つオブジェクトにこのメソッドを実装し、組み込みの len() を実装するのと同じように、この関数を呼び出すことができます。 __iter__() を使用し、組み込みの iter() 関数で、反復可能なオブジェクトのメソッドを呼び出す(または、裏でメソッドを呼び出す)ことができます。

参照 コンテナ型のエミュレーション を参照してください。

Pythonのプロトコルの話題は、こちらが参考になります。 Pythonと最小驚嘆の原則