_xx 單下劃線開頭python
Python中沒有真正的私有屬性或方法,能夠在你想聲明爲私有的方法和屬性前加上單下劃線,以提示該屬性和方法不該在外部調用.若是真的調用了也不會出錯,但不符合規範.ide
#! /usr/bin/python def singleton(cls): _instance = {} # 不建議外部調用 def _singleton(*args, **kargs): if cls not in _instance: _instance[cls] = cls(*args, **kargs) return _instance[cls] return _singleton @singleton class A(object): a = 1 def __init__(self, x = 0): self.x = x a1 = A(2) a2 = A(3) print id(a1) print id(a2) print a1.x print a2.x
__ xx 雙下劃線開頭學習
雙下劃線開頭,是爲了避免讓子類重寫該屬性方法.經過類的實例化時自動轉換,在類中的雙下劃線開頭的屬性方法前加上」_類名」實現.spa
#! /usr/bin/python # -*- coding: utf-8 -*- ''' 遇到問題沒人解答?小編建立了一個Python學習交流QQ羣:778463939 尋找有志同道合的小夥伴,互幫互助,羣裏還有不錯的視頻學習教程和PDF電子書! ''' class A(object): def __init__(self, x): self.__a = 2 self.x = x def __b(self): self.x = 3 a = A(2) # 會報錯,"AttributeError: 'A' object has no attribute '__a'" # print a.x, a.__a print a.x, a._A__a a._A__b() print a.x
__ xx __code
此種寫法爲Python內建屬性方法,最好不要在外部調用視頻