によると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
だけで、狡猾なプログラマが「プライバシー」をハッシュ化できます...!-))