[解決済み】なぜPythonコードはlengthメソッドの代わりにlen()関数を使用するのですか?
2022-04-06 14:46:58
質問
パイソンには
len()
という関数がありますが、なぜ文字列オブジェクトのメソッドとして存在しないのか不思議に思っていました。
更新情報
OK、恥ずかしながら勘違いしていたことに気づきました。
__len__()
は、実は文字列オブジェクトのメソッドなのです。Pythonのオブジェクト指向のコードで、文字列オブジェクトにlen関数を使うのはおかしいと思うのです。さらに
__len__
という名前にしました。
どのように解決するのですか?
文字列には length メソッドがあります。
__len__()
Pythonのプロトコルは、長さを持つオブジェクトにこのメソッドを実装し、組み込みの
len()
を実装するのと同じように、この関数を呼び出すことができます。
__iter__()
を使用し、組み込みの
iter()
関数で、反復可能なオブジェクトのメソッドを呼び出す(または、裏でメソッドを呼び出す)ことができます。
参照 コンテナ型のエミュレーション を参照してください。
Pythonのプロトコルの話題は、こちらが参考になります。 Pythonと最小驚嘆の原則
関連
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み] なぜPythonのコードは関数の中でより速く実行されるのですか?
-
[解決済み] print()を使用してクラスのインスタンスを表示するには?
-
[解決済み] Pythonの関数では、渡すパラメータの種類はどのように扱われるのですか?
-
[解決済み】典型的なテストディレクトリ構造でunittestを実行する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python call matlab メソッドの詳細
-
PythonはWordの読み書きの変更操作を実装している
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")