Python の疑似プライベートメンバ関数と疑似プロテクトメンバ関数 ― 2022年02月11日 13時17分58秒
Python 言語自体にはそのような概念はない。
そこで、Python では慣習で対応している。プライベートメンバ関数は関数名を下線二つで始める。プロテクトメンバ関数は関数名を下線一つで始める。
なお、Python には、下線二つで始まるメンバ関数とメンバ変数は名前マングリングを行う。下線一つとクラス名を更に追記して内部的に保持している。
class C:
def __private_function( self ):
pass:
def _protected_function( self ):
pass:
_C__private_function
が上の関数の表記になる。その為、プライベート関数と名乗ってはいても、外からの参照も可能。
pytest 等でテストを書いていると、テストの書き易さやテストのやり易さ等のバランスから、現実的には大体の関数はプロテクト関数で落ち着いている。
最近のコメント