python私有方法的一个奇怪问题

2024-04-25 13:33:25 发布

您现在位置: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\u myPrivate('niutou')不是si。\u SA\u myPrivate('niutou')


Tags: 代码nameselfreturndef方式saprivate