Pythonでprivate関数を作る方法
auです。
Javaを学んでいると、基本的なことで、privateやpublicといった、アクセスできる関数の範囲を制限する方法を学びます。
Pythonでそういえば学んでいないなと思い、調べてみました。
ちなみに、Pythonで宣言する関数は基本的にpablicらしいです。
やり方
まずは、classを作ります。
その中に、__(アンダースコアを二つ)付けた関数を作ります。
class Test(): def __init__(self): print("init") def public(self): print("public") def __private(self): # ここがprivateな関数 print("private") ret = Test() ret.public() ret._Test__private() # privateな関数にアクセスする ret.__private() # 結果 init public private Traceback (most recent call last): File "test.py", line 15, in <module> ret.__private() AttributeError: 'Test' object has no attribute '__private'
結果をみたとおり、インスタンスを作成した時と、インスタンスメソッドにアクセスした時にprintが呼ばれています。
しかし、__を付けた関数には、アクセスできていません(一番下のやつ)
アクセスするには、3番目のように
_クラス名__プライベート関数名()
これで呼び出すことができます。