2020年10月16日 星期五

Python令人混淆的底線命名

 _name:

class 中的成員變數的變數名稱前有一底線,代表預計標示為是class內部用(非強制性)

module內定義的方法名稱前有一底線,代表不公開,需使用FQN可使用
      也可改寫__all__()表示出外界使用
      還有如果直接讓module於python的shell執行也會顯示使用

name_:變數名稱後有一底線,只是為解決關鍵字衝突

_ _name:

class 中的成員變數的變數名稱前有二底線,代表會在前加上一底線及一class名稱改寫,呈現給外部使用
      但class內部使用依舊使用無改寫原名稱


反向植入成員變數,如命名規則一底線及一class名稱再加二底線的變數名,例"_ClassName_ _VarName"
後來出現這Class名稱的class定義,雖內部無此變數,但會自動加入
_ConfuseClass__confuseVar1=45
   
class ConfuseClass:
    def testFun(self):
         return __confuseVar1

ConfuseClass().testFun()

_ _name_ _:
   代表python內class的特殊成員(不好的用法)如__init__()

_ :在python command shell 中代表最後一個物件,可能是一個值或list等

沒有留言: