2017年11月 / 10月≪ 123456789101112131415161718192021222324252627282930≫12月

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--:--  |  スポンサー広告  |  EDIT  |  Top↑

2010.02.07 (Sun)

pythonでのカプセル化について

pythonでクラスを作っていたら、publicやらprivateやらのアクセス制限はどうしているのかと調べてみた。
どうやら、名前を工夫するらしい。
具体的にどうするのかというと、アンダースコア(_)を変数名やメソッド名の頭に付加すれば良い。
アンダースコアの付け方には2種類あり、1つだけ付加する場合と2つ連続で付加する方法がある。

1つだけの場合は、pythonのシステムが制限してくれるわけではなく、あくまでプログラマが「これは非公開である」という認識を持ってクラスを利用しなければならない。
そのため、書き換えようと思えば書き換えることができる。
プログラマが正しい使い方をしてくれることを信じるわけですな。

2つ連続で付加する場合は、pythonのシステムが内部で変数名を変換してクラスの利用者からのアクセスをできないようにする。
見ることも書き込むこともできない。
ただし、あくまで内部的に変数名を変化させるだけなので、内部でどのような変換がおこなわれているかを知ることができれば、アクセスして書き換えることが可能となる。


う~ん、どうもpythonのこのやり方はしっくりこないなぁ。
イマイチ制限が弱い気がする。
スクリプト言語はコンパイラと違って色々やりにくいのかね、この辺。
具体的な例はありませんが参考URLは貼っておきます。
Rubyなんてソースを見たことすらないけど、要点だけあって見やすかった。

テーマ : プログラミング ジャンル : コンピュータ

06:57  |  プログラミング系  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑

*Comment

コメントを投稿する

URL
COMMENT
PASS  編集・削除するのに必要
SECRET  管理者だけにコメントを表示  (非公開コメント投稿可能)
 

▲PageTop

*Trackback

この記事のトラックバックURL

→http://gasser.blog114.fc2.com/tb.php/395-588ef471

この記事にトラックバックする(FC2ブログユーザー)

この記事へのトラックバック

▲PageTop

 | BLOGTOP | 

 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。