Pythonでプライベートモジュール関数を定義する 質問する

Pythonでプライベートモジュール関数を定義する 質問する

によるとhttp://www.faqs.org/docs/diveintopython/fileinfo_private.html:

ほとんどの言語と同様に、Python にはプライベート要素の概念があります。

  • プライベート関数はモジュール外から呼び出すことができません

ただし、次の 2 つのファイルを定義すると、

#a.py
__num=1

そして:

#b.py
import a
print a.__num

実行すると、例外なしでb.py出力されます。 diveintopython が間違っているのでしょうか、それとも私が何かを誤解しているのでしょうか? また、モジュールの関数をプライベートとして定義する方法ありますか?1

ベストアンサー1

Python では、「プライバシー」は「同意する成人」の同意レベルに依存します。強制することはできません。先頭の 1 つのアンダースコアは、「外部から」アクセスしてはならないことを意味します。先頭の2 つのアンダースコア (末尾のアンダースコアなし) は、メッセージをさらに強力に伝えます... しかし、最終的には、社会的な慣習と合意に依存します。Python のイントロスペクションは十分に強力であるため、世界中のすべてのプログラマーにあなたの希望を尊重するよう拘束することはできません。

((ちなみに、これは厳重に守られた秘密ですが、C++ でも同じことが言えます。ほとんどのコンパイラでは、ファイルの の#define private public前に 1 行#include追加する.hだけで、狡猾なプログラマが「プライバシー」をハッシュ化できます...!-))

おすすめ記事