关于python私有方法的一个奇怪问题
我知道python中的一切都是公共的,我们只是用双下划线将这些变量视为私有变量,但我们可以用其他方式在类外访问这些变量。但是我在测试以下代码时遇到了一些问题关于python私有方法的一个奇怪问题,python,Python,我知道python中的一切都是公共的,我们只是用双下划线将这些变量视为私有变量,但我们可以用其他方式在类外访问这些变量。但是我在测试以下代码时遇到了一些问题 class SA: def __myPrivate(self,name): return 'private'+name def _myProtected(self): self.name = 'protected name' def setName(self,name):
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('niutou')而不是si。'u SA_myPrivate('niutou')你想要什么
>>> print si._SA__myPrivate('niutou')
privateniutou
请注意双
\uu
。神奇的替换保持了这一点,仅在转换该属性时附加一个\uu+classname
。阅读文档的第二段:可能是因为您从未定义\u SA\u myPrivate
属性。我不明白您的意思,您能详细解释一下吗?谢谢正如评价最高的评论指出的那样:阅读教程: