Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于python私有方法的一个奇怪问题_Python - Fatal编程技术网

关于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):

我知道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('niutou')而不是si。'u SA_myPrivate('niutou')你想要什么

>>> print si._SA__myPrivate('niutou')
privateniutou

请注意双
\uu
。神奇的替换保持了这一点,仅在转换该属性时附加一个
\uu+classname

阅读文档的第二段:可能是因为您从未定义
\u SA\u myPrivate
属性。我不明白您的意思,您能详细解释一下吗?谢谢正如评价最高的评论指出的那样:阅读教程: