*Memo:
- My post explains the single, double and triple leading and trailing underscore with variables, functions and classes.
- My post explains the single, double and triple leading and trailing underscore with the variables, functions and classes in a function.
- My post explains naming convention.
A single, double and triple leading and trailing underscore can be used with the variables, methods and classes in a class:
*Memo:
- A single leading underscore(
_abc
) can make the unforced private attributes(variables, methods and classes) in a class which are basically used in a class so they're still acceptable from the outside of the class. - A double leading underscore(
__abc
) can make the forced private attributes in a class which are only used in the class so it's unacceptable from the outside of the class. - A double leading and trailing underscore(
__abc__
) can make the special public attributes which are used in and out a class, e.g.__init__
,__class__
,__name__
, etc. - A single trailing underscore(
abc_
) is used to prevent identifier conflicts when using the identifiers (including reserved keywords) which already exist, e.g.var_
,func_
,len_
,list_
,int_
,True_
,def_
,class_
, etc. -
S
is single as the 1st character. -
D
is double as the 1st character. -
T
is triple as the 1st character. -
L
is leading as the 2nd character. -
T
is trailing as the 2nd character. -
U
is underscore or underscores as the 3rd character.
<The variables in a class>:
class Cls: _var = "_var" # SLU (Acceptable) __var = "__var" # DLU (Unacceptable) ___var = "___var" # TLU (Unacceptable) var_ = "var_" # STU (Acceptable) var__ = "var__" # DTU (Acceptable) var___ = "var___" # TTU (Acceptable) _var_ = "_var_" # SLU & STU (Acceptable) __var_ = "__var_" # DLU & STU (Unacceptable) ___var_ = "___var_" # TLU & STU (Unacceptable) _var__ = "_var__" # SLU & DTU (Acceptable) __var__ = "__var__" # DLU & DTU (Acceptable) ___var__ = "___var__" # TLU & DTU (Acceptable) _var___ = "_var___" # SLU & TTU (Acceptable) __var___ = "__var___" # DLU & TTU (Acceptable) ___var___ = "___var___" # TLU & TTU (Acceptable) cls = Cls() print(cls._var) # _var print(cls.__var) # Error print(cls.___var) # Error print(cls.var_) # var_ print(cls.var__) # var__ print(cls.var___) # var___ print(cls._var_) # _var_ print(cls.__var_) # Error print(cls.___var_) # Error print(cls._var__) # _var__ print(cls.__var__) # __var__ print(cls.___var__) # ___var__ print(cls._var___) # _var___ print(cls.__var___) # __var___ print(cls.___var___) # ___var___
<The methods in a class>:
class Cls: def _func(self): pass # SLU (Acceptable) def __func(self): pass # DLU (Unacceptable) def ___func(self): pass # TLU (Unacceptable) def func_(self): pass # STU (Acceptable) def func__(self): pass # DTU (Acceptable) def func___(self): pass # TTU (Acceptable) def _func_(self): pass # SLU & STU (Acceptable) def __func_(self): pass # DLU & STU (Unacceptable) def ___func_(self): pass # TLU & STU (Unacceptable) def _func__(self): pass # SLU & DTU (Acceptable) def __func__(self): pass # DLU & DTU (Acceptable) def ___func__(self): pass # TLU & DTU (Acceptable) def _func___(self): pass # SLU & TTU (Acceptable) def __func___(self): pass # DLU & TTU (Acceptable) def ___func___(self): pass # TLU & TTU (Acceptable) cls = Cls() print(cls._func.__name__) # _func print(cls.__func.__name__) # Error print(cls.___func.__name__) # Error print(cls.func_.__name__) # func_ print(cls.func__.__name__) # func__ print(cls.func___.__name__) # func___ print(cls._func_.__name__) # _func_ print(cls.__func_.__name__) # Error print(cls.___func_.__name__) # Error print(cls._func__.__name__) # _func__ print(cls.__func__.__name__) # __func__ print(cls.___func__.__name__) # ___func__ print(cls._func___.__name__) # _func___ print(cls.__func___.__name__) # __func___ print(cls.___func___.__name__) # ___func___
<The classes in a class>:
class Cls: class _Cls: pass # SLU (Acceptable) class __Cls: pass # DLU (Unacceptable) class ___Cls: pass # TLU (Unacceptable) class Cls_: pass # STU (Acceptable) class Cls__: pass # DTU (Acceptable) class Cls___: pass # TTU (Acceptable) class _Cls_: pass # SLU & STU (Acceptable) class __Cls_: pass # DLU & STU (Unacceptable) class ___Cls_: pass # TLU & STU (Unacceptable) class _Cls__: pass # SLU & DTU (Acceptable) class __Cls__: pass # DLU & DTU (Acceptable) class ___Cls__: pass # TLU & DTU (Acceptable) class _Cls___: pass # SLU & TTU (Acceptable) class __Cls___: pass # DLU & TTU (Acceptable) class ___Cls___: pass # TLU & TTU (Acceptable) cls = Cls() print(cls._Cls().__class__.__name__) # _Cls print(cls.__Cls().__class__.__name__) # Error print(cls.___Cls().__class__.__name__) # Error print(cls.Cls_().__class__.__name__) # Cls_ print(cls.Cls__().__class__.__name__) # Cls__ print(cls.Cls___().__class__.__name__) # Cls___ print(cls._Cls_().__class__.__name__) # _Cls_ print(cls.__Cls_().__class__.__name__) # Error print(cls.___Cls_().__class__.__name__) # Error print(cls._Cls__().__class__.__name__) # _Cls__ print(cls.__Cls__().__class__.__name__) # __Cls__ print(cls.___Cls__().__class__.__name__) # ___Cls__ print(cls._Cls___().__class__.__name__) # _Cls___ print(cls.__Cls___().__class__.__name__) # __Cls___ print(cls.___Cls___().__class__.__name__) # ___Cls___
Top comments (0)