2009年6月29日月曜日

完全なカプセル化は行えない

Javaでインスタンス変数を隠蔽してカプセル化を行う場合は変数にprivate修飾子を指定します。
Pythonにおいては変数名の先頭に"__"とアンダーバーを2つ付けることで同様の意味を持たせることが可能です。

例)Python
下記classの変数"__name"にはアクセスできない。

class Person:
__name = "hoge"

p = Person()
print p.__name # <- AttributeError: Person instance has no attribute '__name'

実はこれ、内部的には変数が別名に置き換わって定義され、その別名を指定すると直接アクセスすることが可能なようです。
擬似的にprivateを実現させているものですが、実用上は問題ありませんね。

0 件のコメント:

コメントを投稿