1. ホーム
  2. python

[解決済み] Python "private" 関数コーディング規約

2023-04-10 18:40:54

質問

Pythonモジュールとその中の関数を書くとき、外部に公開することを想定したいくつかの "public"関数と、ローカルおよび内部でのみ参照および使用することを想定した他のいくつかの "private"関数があります。

私は、pythonに絶対的なプライベート関数がないことを理解しています。しかし、"public" 関数と "private" 関数を区別するための最良の、最もきちんとした、または最も使用されるスタイルは何でしょうか?

私が知っているスタイルのいくつかをリストアップします。

  1. 使用 __all__ を使用することで、モジュールファイル内の関数 ( python __all__ モジュールレベル変数は何のためにあるのですか? )
  2. private"関数の名前の最初にアンダースコアを使用します。

他に何かアイデアや慣習があるのでしょうか?

ありがとうございました。

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

Pythonの クラス モジュールのドキュメントから。

オブジェクトの内部からでなければアクセスできない "プライベート "なインスタンス変数は、Pythonには存在しません。しかし、ほとんどのPythonのコードで守られている慣習があります:アンダースコアで始まる名前(例えば_spam)はAPIの非公開部分として扱われるべきです(それが関数、メソッド、データメンバであろうと)。それは実装の詳細とみなされるべきで、予告なしに変更される可能性があります。

クラスのプライベートメンバには有効な使用事例があるため (すなわち、サブクラスによって定義された名前との名前の衝突を避けるため)、 名前のマングリングと呼ばれるこのようなメカニズムのサポートが制限されています。ここで classname は現在のクラス名で、先頭のアンダースコアは取り除かれます。このマングリングは、クラスの定義内で発生する限り、識別子の構文上の位置には関係なく行われます。