2024-05-08 02:57:31 发布
网友
我正在写一个需要一些全局常量变量的包。尽管这些变量是常量,但在执行任何其他操作之前,这些变量都可以更改。例如,nproc是使用的处理器数。由于允许全局变量更改是危险的,因此应该在导入包后锁定这些变量。在
nproc
我想到的唯一方法是读取配置文件。然而,作为python包(而不是应用程序),需要配置文件确实很奇怪。在
处理这种全局配置的正确方法是什么?在
编辑:
需要注意的是,这些变量不是像pi那样永远不会改变的东西。它可以更改,但在使用此包期间应保持不变。在
pi
您可以创建一个在初始化时设置变量的类,然后使用@property声明getter而不是setter。例如:
# For Python 2, inherit from object # (otherwise @property will not work) class MyGlobals(): # Possibly declare defaults here def __init__(self, nproc, var1, var2): self.__nproc = nproc self.__var1 = var1 self.__var2 = var2 @property def nproc(self): return self.__nproc @property def var1(self): return self.__var1 @property def var2(self): return self.__var2 myg = MyGlobals(4, "hello", "goodbye") print(myg.nproc, myg.var1, myg.var2) myg.nproc = 42
给出:
MyGlobals类可能被放在一个模块中。在
MyGlobals
如果你的意思是从源代码中分离变量,那么我建议python-decouple。我希望这有帮助
您可以创建一个在初始化时设置变量的类,然后使用@property声明getter而不是setter。例如:
给出:
^{pr2}$MyGlobals
类可能被放在一个模块中。在如果你的意思是从源代码中分离变量,那么我建议python-decouple。我希望这有帮助
相关问题 更多 >
编程相关推荐