在Python中声明私有变量

时间:2016-01-10 03:21:45

标签: python python-2.7 oop private-members public-members

我正在Python写一个银行应用程序,并从这里阅读一些源代码Banking Applicationbalance类定义如下:

class Balance(object):
    """ the balance class includes the balance operations """

    def __init__(self):
        """ instantiate the class """
        self.total = 0

    def add(self, value):
        """ add value to the total
        Args:
            value (int): numeric value
        """
        value = int(value)
        self.total += value

    def subtract(self, value):
        """ subtract value from the total
        Args:
            value (int): numeric value
        """
        value = int(value)
        self.total -= value

我的问题

由于不应在类外部访问余额详细信息,因此我们应将属性self.total定义为self.__total,因为我们应将其设为private而不是public变量?我的思路是否正确?

1 个答案:

答案 0 :(得分:6)

简而言之:在Python中无法拥有真正的“私有”类成员。运行时只是不支持内存保护,例如Java。

双下划线前缀破坏了名称,因此它包含了它所使用的类的名称(例如,__total将成为_Balance__total),但这主要用于允许子类定义名称看似相同,但引用不同的字段。

Python中的标准约定是使用单个下划线前缀 - _total - 对于应被视为“私有”或“受保护”的类成员,然后相信其他开发人员将成为成年人并尊重(当然,这并不总是一个安全的假设......)

看到现代Python代码使用双下划线属性,非常