【问题标题】:Why python does not have any access modifier for constants? [duplicate]为什么python没有任何常量访问修饰符? [复制]
【发布时间】:2015-11-13 20:42:47
【问题描述】:

如果是语言设计选择,对此有何解释?

有没有其他方法可以避免某人甚至我自己在执行程序时更改常量值,而不必使用不可变数据类型?

【问题讨论】:

  • 你使用什么作为常量?你能使用不可变的数据结构吗?
  • 你不能不给那个常量分配任何东西吗?
  • 你是说元组?当我可以使用访问修饰符时,使用元组对我来说感觉有点脏。
  • Python 不是 C。它有不同的数据模型。不要考虑包含值的变量(或常量),要考虑绑定到名称的对象(可能是可变的,也可能不是可变的)。您可能会发现这篇文章很有帮助:Facts and myths about Python names and values,由 SO 资深人士 Ned Batchelder 撰写。

标签: python constants


【解决方案1】:

Python 倾向于简单,并使用name mangling

简而言之,约定是对受保护/私有变量使用下划线。

也检查一下:

why python does not have access modifier?And what are there alternatives in python?

编辑1:

如果你真的想隐藏它们,你可以试试这个:

#constants.py
foo = 1

然后在你的项目上,使用:

import constants

现在您可以访问它们,并且“受保护”。

【讨论】:

  • 下划线不会阻止我更改常量的值。
  • 它不会,除非你把所有的常量值放在它们自己的模块中。
  • @fandressouza:这就是“我们都是成年人”的 Python 哲学的用武之地。_ 说“你不应该”。但如果你有正当的需要这样做,Python 不会阻止你,因为它认为你是一个成熟的成年人,而且总是有原作者没有预料到的用例。
猜你喜欢
  • 2011-08-27
  • 2014-06-09
  • 2011-04-12
  • 1970-01-01
  • 2020-02-05
  • 2015-11-26
  • 1970-01-01
  • 2016-07-18
相关资源
最近更新 更多