一個底線 _
def _getName(self): ... name = property(_getName)
代表 _getName 是 private function,不應該被外部呼叫,常常應用於 property 中
,然而在 Python 中,並沒有真的 private function,所以應該說是撰寫上的慣例。
兩個底線 __
class A(): def __getName(self): .... a = A() a.__getName # Wrong!! a._A__getName # OK, but not doing this!
代表 __getName 不允許被 override,而且也不能被外部呼叫。
Python 的實作方式其實就是在方法前加上類別名稱 -> _A__getName。
Ref: http://igorsobreira.com/2010/09/16/difference-between-one-underline-and-two-underlines-in-python.html