如何在Python中的命名空间下创建类似C的常量结构对象

2024-07-03 05:43:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个类的常量对象,可以在其他类和函数中反复使用

# 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++中的一些东西,在其中创建一个全局或给定的命名空间中的常量对象,这些对象可以被重用为一个具有完全限定名的常量对象,比如DATAYMAMSTATE::DATA1或DATAYMAMSTATE::DATA2等等

然而,我不确定我在上面所做的是用Python实现同样目标的Python方法。这是正确的吗


Tags: 对象函数selfdatadefsimplestructclass
1条回答
网友
1楼 · 发布于 2024-07-03 05:43:28

在类的上层声明的变量是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

相关问题 更多 >