当前位置:  开发笔记 > 编程语言 > 正文

在Python中声明私有变量

如何解决《在Python中声明私有变量》经验,为你挑选了1个好方法。

我在写一个银行应用程序Python,并从这里读了一些源代码的银行应用程序.该balance课程定义如下:

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> David Woleve..:

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

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

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

这是非常难得一见的现代Python代码使用双下划线属性.


[参考链接](http://stackoverflow.com/questions/6930144/underscore-vs-double-underscore-with-variables-and-methods)进行额外阅读.
不.正如我在上一段中所说,Python确实假设开发代码的开发人员不会是恶意的.
推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有