[解決済み] Python "private" 関数コーディング規約
2023-04-10 18:40:54
質問
Pythonモジュールとその中の関数を書くとき、外部に公開することを想定したいくつかの "public"関数と、ローカルおよび内部でのみ参照および使用することを想定した他のいくつかの "private"関数があります。
私は、pythonに絶対的なプライベート関数がないことを理解しています。しかし、"public" 関数と "private" 関数を区別するための最良の、最もきちんとした、または最も使用されるスタイルは何でしょうか?
私が知っているスタイルのいくつかをリストアップします。
-
使用
__all__
を使用することで、モジュールファイル内の関数 ( python __all__ モジュールレベル変数は何のためにあるのですか? ) - private"関数の名前の最初にアンダースコアを使用します。
他に何かアイデアや慣習があるのでしょうか?
ありがとうございました。
どのように解決するのですか?
Pythonの クラス モジュールのドキュメントから。
オブジェクトの内部からでなければアクセスできない "プライベート "なインスタンス変数は、Pythonには存在しません。しかし、ほとんどのPythonのコードで守られている慣習があります:アンダースコアで始まる名前(例えば_spam)はAPIの非公開部分として扱われるべきです(それが関数、メソッド、データメンバであろうと)。それは実装の詳細とみなされるべきで、予告なしに変更される可能性があります。
クラスのプライベートメンバには有効な使用事例があるため (すなわち、サブクラスによって定義された名前との名前の衝突を避けるため)、 名前のマングリングと呼ばれるこのようなメカニズムのサポートが制限されています。ここで classname は現在のクラス名で、先頭のアンダースコアは取り除かれます。このマングリングは、クラスの定義内で発生する限り、識別子の構文上の位置には関係なく行われます。
関連
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?