如何在Python中保存常用的物理常量

mar*_*rou 3 python class constants

我希望有一个地方可以存放我的物理常数。

以下答案已经是一个起点: 如何在许多文件中导入常量

所以我有一个名为constants.py的单独文件,我将其导入到我的项目中。

现在,我想保存并访问附加信息:

  • 单位
  • 文档

最终的界面应该是这样的:

import constants as c

print c.R
>>> 287.102
print c.R.units
>>> J/(kg K)
print c.R.doc
>>> ideal gas constant
Run Code Online (Sandbox Code Playgroud)

计算应使用cR来访问该值。

它基本上是一个类,其行为类似于 float 类,但包含两个附加字符串:单位和文档。这可以怎么设计呢?

Dan*_*iel 5

继承自 class float,您必须覆盖 -__new__方法:

class Constant(float):
    def __new__(cls, value, units, doc):
        self = float.__new__(cls, value)
        self.units = units
        self.doc = doc
        return self

R = Constant(287.102, "J/(kg K)", "deal gas constant")

print R, R * 2
>>> 287.102 574.204
print R.units
>>> J/(kg K)
print R.doc
>>> ideal gas constant
Run Code Online (Sandbox Code Playgroud)