如何在 Python 中的命名空间下创建类似结构对象的常量 C
How to create constant C like struct objects under a namespace in Python
我想创建一个 class 的常量对象,我可以在其他 class 和函数中一次又一次地使用它
# 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 中完成相同任务的 pythonic 方式。这是正确的吗?
在 class 的上层声明的变量是 class variables,并且仅在声明它们的站点创建一次,然后它们保持常量。你可以自己看看这个:
def calc_value():
print("computed the value")
return 1
class Foo:
my_var = calc_value()
print(Foo.my_var + Foo.my_var)
# prints "computed the value" then 2
我想创建一个 class 的常量对象,我可以在其他 class 和函数中一次又一次地使用它
# 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 中完成相同任务的 pythonic 方式。这是正确的吗?
在 class 的上层声明的变量是 class variables,并且仅在声明它们的站点创建一次,然后它们保持常量。你可以自己看看这个:
def calc_value():
print("computed the value")
return 1
class Foo:
my_var = calc_value()
print(Foo.my_var + Foo.my_var)
# prints "computed the value" then 2