Python の「プライベート」クラス変数: 文化的規範
Python のクラス構造は、インスタンスの宣言を強制しないという点で Java のクラス構造とは異なります。コンストラクター内の変数。代わりに、インスタンス変数はコンストラクター内で初期化することも、後で割り当てることもできます。この柔軟性により、次のような疑問が生じます: Python にはプライベート変数の概念がありませんか?
質問: なぜプライベート アクセス修飾子がないのですか?
Java では、パブリック、プライベート、およびprotected アクセス修飾子は、クラス変数へのアクセスを保護します。ただし、Python にはそのようなアクセス修飾子がありません。 Bruce Eckel の Python パターン マニュアルでは、インスタンス変数がコンストラクター内で単に割り当てられるだけであることが示されており、機密データのカプセル化をどのように強制するかという問題は残ります。
答え: 文化的慣習と __ プレフィックス
Python は、他のクラスのインスタンスやクラス変数を直接変更することを妨げる文化的規範に従っています。 Java とは異なり、Python はプログラマが他のクラスのプライバシーを尊重することを奨励します。クラス ソースを直接編集してプライベート Java 変数を変更することは技術的には可能ですが、この方法はお勧めできません。
Python でプライベート変数をエミュレートしたい場合は、__ 接頭辞規則を使用できます。この接頭辞により変数名が自動的に破壊され、名前空間の外では変数名が見えにくくなります。ただし、これは確実なセキュリティ対策ではなく、必要に応じてバイパスできることに注意することが重要です。
追加の命名規則
_ プレフィックスを超えて, Python では、クラスまたはモジュール内で内部的に使用する変数に 接頭辞を使用することも推奨されています。このような変数は技術的にはスコープ外からアクセスできますが、変更しないことをお勧めします。
以上がPython には真のプライベート変数がありませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。