我知道python中的所有東西都是公共的,我們只是將這些變量用雙下劃線作爲私有變量來處理,但我們可以通過其他方式在類之外訪問這些變量。但是當我測試下面的代碼時遇到了一些問題。關於python私有方法的一個奇怪的問題
class SA:
def __myPrivate(self,name):
return 'private'+name
def _myProtected(self):
self.name = 'protected name'
def setName(self,name):
self.name = self.__myPrivate(name)
def getName(self):
return self.name
def printf(self):
print self.name
si = SA()
print si._SA_myPrivate('niutou')
的例外是:
print si._SA_myPrivate('niutou')
AttributeError: SA instance has no attribute '_SA_myPrivate'
爲什麼呢?請幫我解決這個問題。謝謝!
是的,我意識到我犯了一個低級錯誤!它應該是si。 SA _myPrivate( '牛頭')不si._SA_myPrivate( '牛頭')
閱讀文檔的第二段:https://docs.python.org/3/tutorial/classes.html#private-variables – Blender
可能因爲您從不定義'_SA_myPrivate'屬性。 –