python类中私有变量的实际实现[重复]

2024-03-16

可能的重复:
Python 中对象名称前的单下划线和双下划线的含义 https://stackoverflow.com/questions/1301346/the-meaning-of-a-single-and-a-double-underscore-before-an-object-name-in-python

我在阅读关于私有变量的python文档时有一个问题link http://docs.python.org/2/tutorial/classes.html#private-variables-and-class-local-references.

所以文档告诉我们,用下划线命名私有变量是一种约定,但 python 不会将该字段设为私有。

>>> class a():
      def __init__(self):
         self.public = 11
         self._priv = 12
>>> b = a()
>>> print b._priv
>>> 12

我想知道是否有一种方法可以使 python 中的变量“真正”私有。


  • 吉多·范罗森 (Guido van Rossum) 说道:我们都是成年人.
  • 扩展版本:我们都是成年人了。如果必要的话,请随意搬起石头砸自己的脚。

你可以隐藏它a bit如果你必须这样做,但你真的不应该:

class NonAdult(object):
    def __init__(self):
        self.__private_number = '42'
    def __getattr__(self, name):
        if name.startswith('__private'):
            raise AttributeError

if __name__ == '__main__':
    na = NonAdult()
    print(na.__private_number) # raises AttributeError
    print(na.__dict__['_NonAdult__private_number']) # would still return 42
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python类中私有变量的实际实现[重复] 的相关文章

随机推荐

  • Flask AttributeError:“HTMLString”对象没有属性“__call__”

    我创建了一个宏来处理表单错误 如下所示 macro render field with errors field p field label field kwargs safe if field errors p ul for error
  • R:如何将移动平均值应用于数据框中的列子集?

    我有一个数据框 training set 其中包含 83 个变量的 150 个观察值 我想用一些移动平均线来转换其中 82 个列 问题是结果最终只有 150 个数值 即 1 列 如何在数据中的每一列中单独应用移动平均函数并保持第 83 列不
  • “您的设备与此版本不兼容”

    我在 Play 商店中放置了一个应用程序 而我的朋友 在两台设备上运行 4 0 3 在尝试安装我的应用程序时收到以下消息 您的设备与此版本不兼容 一台设备允许安装 而另一台设备则不允许 我允许 API 3 15 并且两台设备都是 4 0 3
  • 向量子集性能:名称与索引

    如果我有一个向量v姓名 John Murray Lisa Mike Joe Ann 0 0832090 0 0475580 0 2797860 0 1086225 0 0104590 0 0028250 时间复杂度是多少v Joe vers
  • 如何将PHP编译成操作码并在生产环境中运行?

    注意 这不是facebook最近的hiphop项目 我只是想把它转换成opcode not c c 现在还有解决办法吗 演示永远是最好的 您正在寻找的是PHP加速器 http en wikipedia org wiki PHP accele
  • 创建 Dockerfile - docker 在每个新构建上从头开始

    我正在尝试构建一个 dockerfile 迭代地添加行和测试 我的理解是 docker 将缓存已经构建的行 并从我添加的新行开始 情况似乎是 每次我在容器上调用 build 时 它只是从头开始构建 这是正常的吗 如果不是 我做错了什么 正如
  • REngine”不包含“SetDllDirectory”、“RDotNet”的定义

    My Code using System using System Collections Generic using System ComponentModel using System Data using System Drawing
  • Android 通过按钮打开相机

    我希望这不是一个重复的问题 但我正在制作一个应用程序 我想要一个按钮来打开相机应用程序 单独的默认 Android 相机 我怎样才能做到这一点 我知道有一个功能 intent setAction MediaStore ACTION IMAG
  • 在 Big Query 上向表中插入数据时出现 IO 异常

    我正在尝试在大查询的表中插入数据 我遵循了一些文档 我的最终代码如下所示 HttpTransport TRANSPORT new NetHttpTransport JsonFactory JSON FACTORY new JacksonFa
  • 如何使用jquery放大图像

    我只是想知道如何使用 jquery 放大图片 像这个网站这样的东西 当您单击大图像时 它会放大 您可以移动光标并在放大时查看图片的其他部分 如果有人可以向我展示链接或将我引向正确的方向 我将不胜感激 它们不会放大 真正发生的是 当您单击 缩
  • lua多重赋值

    lua中是否有任何多重赋值的方法 使得右侧缺失的值不被视为nil 类似于 a b c 1 但得到 a 1 b 1 c 1 结果 很遗憾 a b c 1 不起作用 我需要这个 因为我可能在右侧有复杂的表格 并且我想保持它简短 没有任何附加变量
  • C++ 中的结构继承

    Can a struct在C 中可以继承吗 Yes struct完全就像class除了默认的可访问性是public for struct 虽然它是private for class
  • 在构造函数中自动生成唯一 ID

    使用 VB net 创建一个名为 Staff 的新类 它具有三个属性 Name LastName ID 应适合用作数据库中的主键 提供类构造函数来填充 Name 和 LastName ID 应在构造函数内自动生成 不应传入 我知道如何创建类
  • ExtJS菜单checkItem:如何防止在某些情况下出现项目检查事件?

    对于菜单checkItem 当用户点击它时 默认会触发checkchange 我想知道如果满足某种情况 如何在单击后不更改其检查状态 换句话说 停止此事件链 我尝试了以下代码 但不起作用 listeners click function i
  • 查询方法参数应该是可以转换为数据库列的类型或包含此类类型的列表/数组

    我有一个具有自定义数据类型的数据库FollowEntityType作为一个列 Entity primaryKeys arrayOf id type tableName follow info data class FollowInfoEnt
  • 正确的 strtod 实现?

    简单的问题 双精度数字 1 15507e 173 的正确位表示是什么 完整的问题 如何确定这个数字的正确解析 背景 我的问题来自这个答案 https stackoverflow com questions 1994658 locale in
  • 通过引用传递基元类型而不是通过值返回有效率上的好处吗?

    在 C 中 通过引用传递基本类型而不是通过值返回是否有效率优势 通过引用传递基元类型而不是通过值返回是否有效率优势 不太可能 首先 除非您从探查器中获得的数据让您有理由这样做 否则您在设计程序时不应担心性能问题 选择simplest设计 以
  • 从逗号或制表符分隔的文本文件中读取

    我需要从可以用逗号或制表符分隔的文件中读取数据 我现在有一个函数 getcsv 但它只接受一个可能的分隔符 有什么想法如何处理这个问题吗 Thanks 从 PHP 5 3 开始 您可以使用str getcsv http php net ma
  • Mac PyQt5 菜单栏在取消焦点重新聚焦应用程序之前不会激活

    我在 Mac 中使用 PyQt5 创建 Qt 菜单栏时遇到问题 我遇到的问题是菜单栏会显示 但直到我取消应用程序的焦点 通过单击其他应用程序 然后再次重新聚焦 Qt 应用程序时才会做出反应 这是我的环境 操作系统 塞拉利昂 10 12 Py
  • python类中私有变量的实际实现[重复]

    这个问题在这里已经有答案了 可能的重复 Python 中对象名称前的单下划线和双下划线的含义 https stackoverflow com questions 1301346 the meaning of a single and a d