【发布时间】:2020-11-19 01:24:19
【问题描述】:
我想创建一个可以在其他类和函数中反复使用的类的常量对象
# Simple C like struct
class data:
def __init__(self,a,b)
self.a = a
self.b = b
# Constant objects in a namespace ??
class DATA_CONSTANTS:
DATA1 = data(0,0)
DATA2 = data(3,5)
DATA3 = data(43, 23)
如果我现在想使用 DATA_CONSTANTS.DATA1,它是在第一次调用时创建还是在我每次引用此对象时创建?
我正在寻找类似于在 C++ 中的东西,您可以在全局或给定命名空间中创建常量对象,这些对象可以作为具有完全限定名称的常量对象重用,例如 DATA_CONSTANTS::DATA1 或 DATA_CONSTANTS::DATA2 等。
但是我不确定我在上面所做的是否是在 Python 中完成相同操作的 Python 方式。这是正确的吗?
【问题讨论】:
-
"如果我现在想使用 DATA_CONSTANTS.DATA1,它是在第一次调用时创建还是每次我引用这个对象时创建?"作为类定义语句的结果,对象(一个类)被创建一次。从未创建过其他对象,为什么会这样?
-
Python 并没有真正的用户定义常量,顺便说一句,只有约定
-
我将枚举用于模块范围的常量。 docs.python.org/3/library/enum.html
-
你也使用
DATA_CONSTANTS = types.SimpleNameSpace(DATA1 = data(0,0), DATA2 = data(3,5), DATA3 = data(43, 23))
标签: python object static constants