ちょっと色々あって調べたのでぺたり
# -*- coding: utf-8 -*-
class Hoge(object):
def __init__(self):
self.__foo = 'foo'
self._bar = 'bar'
hoge = Hoge()
# AttributeError: 'Hoge' object has no attribute '__foo'
# print hoge.__foo
print hoge._bar
print hoge._Hoge__foo
print hoge.__dict__
実行結果
bar
foo
{'Hoge_foo': 'foo', '_bar': 'bar'}
なにかっちゅうとHoge.__fooはprivate風のプロパティだよと。
アンスコ2つ付けたプロパティはネームマンダリングが行われるからprivateっぽい挙動になるよとのこと。
変数の隠蔽が主目的じゃないっぽいのでそこは頭にとりあえず入れとく。
難号化の規則は主に不慮の事故を防ぐためのものだということに注意してください; 確信犯的な方法で、プライベートとされている変数にアクセスしたり変更することは依然として可能なのです。デバッガのような特殊な状況では、この仕様は便利ですらあります。