ページへ戻る
− Links
印刷
Python/クラス定義
の編集 ::
NJF Wiki
xpwiki
:
Python
/
クラス定義
の編集
# y20ef82a の編集
ページ内容:
*参照の制限 [#y20ef82a] Pythonではprivateなどの参照範囲を制限する修飾子はサポートされていません。 代わりに「_」(アンダーバー)で始まる要素には慣習的にクラス外から参照しない(しようと思えばできる)、「__」(アンダーバー2つ)で始まる要素はクラス外から参照するとエラーになる(しかし、こちらもしようど思えばできる)、という命名ルールがあります。 class PrivateMethod(object): def __method(self): print "__method" def _method(self): self.__method() privateMethod = PrivateMethod() 「_」で始まるメソッドは参照可能(ただし慣習的に参照するのは非推奨)。 privateMethod._method() 結果 __method 「__」で始まるメソッドはクラス内からの呼び出しは可能ですが、外部から呼び出すとエラーとなります。 privateMethod.__method() 結果 Traceback (most recent call last): File "class_test.py", line 42, in <module> privateMethod.__method() AttributeError: PrivateMethod instance has no attribute '__method' しかし、実はこれは「__」で始まるメソッドは「_クラス名メソッド名」と名前が変更されるだけなので、無理矢理アクセスすることも可能です。 privateMethod._PrivateMethod__method() 結果 __privateMethod つまり、Pythonには言語仕様として完全にアクセス範囲を制限する機能はありません。 そのため、アクセスをコントロールするには人間が気をつけるしかありません。 プログラムを無駄に複雑にしないために、なるべく慣習的なスタイルを守るようにしましょう。
編集の要約:
Q & A 認証:
ページ更新時は次の質問にお答えください。(プレビュー時は必要ありません)
Q:
日本の首都は?(漢字で)
A:
お名前:
タイムスタンプを変更しない
テキスト整形のルールを表示する
[1]
Links list
(This host) = https://njf.jp
(This host)
/cms/modules/xpwiki/?cmd=edit&help=true&page=Python%2F%E3%82%AF%E3%83%A9%E3%82%B9%E5%AE%9A%E7%BE%A9