名前の難号化は、クラスにおいて、 ``プライベートな'' インスタンス変数やメソッドを定義する際に、導出クラスで定義されるインスタンス変数を気にしたり、クラスの外側のコードからインスタンス変数をいじりまわすことがないように簡単に定義できるようにするためのものです。
Pythonチュートリアル 9.6 プライベート変数
Python
よく解らないから、とりあえず書いてみる。
class Hoge: def put(self): print "Fugera!" def __private(self): print "Private!"
実行結果
Fugera! Traceback (most recent call last): File "/tmp/py994PvY", line 9, inc.__private() AttributeError: Hoge instance has no attribute '__private'
調べてみた
>>> c = Hoge() >>> dir(c) ['_Hoge__private', '__doc__', '__module__', 'put'] >>> c._Hoge__private() Private!
'_Hoge__private'でアクセスできた。
難号化の規則は主に不慮の事故を防ぐためのものだということに注意してください; 確信犯的な方法で、プライベートとされている変数にアクセスしたり変更することは依然として可能なのです。
Pythonチュートリアル 9.6 プライベート変数
ほほぅ(゚Д゚)