【问题标题】:how to set global const variables in python如何在python中设置全局常量变量
【发布时间】:2013-08-16 00:11:02
【问题描述】:

我正在构建一个包含各种类和函数的解决方案,所有这些类和函数都需要访问一些全局常量才能正常工作。由于 python 中没有const,您认为设置一种全局常量的最佳做法是什么。

global const g = 9.8 

所以我正在寻找上述的一种

编辑:怎么样:

class Const():
    @staticmethod
    def gravity():
        return 9.8

print 'gravity: ', Const.gravity()

?

【问题讨论】:

  • 不起作用。任何人都可以更改Const.gravity 或完全替换Const 类。缺少像const 这样的东西是一个深思熟虑的设计决定; Python 很难强制执行代码不会触及它不应该触及的东西。相反,如果您不应该触摸某物,则标准做法是不触摸它。

标签: python variables global-variables constants declaration


【解决方案1】:

一般约定是用大写和下划线定义变量,而不是更改它。喜欢,

GRAVITY = 9.8

但是,可以使用namedtuple 在 Python 中创建常量

import collections

Const = collections.namedtuple('Const', 'gravity pi')
const = Const(9.8, 3.14)

print(const.gravity) # => 9.8
# try to change, it gives error
const.gravity = 9.0 # => AttributeError: can't set attribute

对于namedtuple,请参阅文档here

【讨论】:

  • 这是最接近 const.. 的实现
【解决方案2】:

您不能在 Python 中定义常量。如果你找到某种黑客来做这件事,你只会让每个人都感到困惑。

要做到这一点,通常你应该只需要一个模块 - 例如globals.py,你可以在任何需要它的地方导入

【讨论】:

  • 我怀疑“因为 python 中没有 const”:/
  • 你如何命名你的常量?全部大写?或类似 c_gravitation 的东西?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多