Python声明可由多个模块访问的全局类

2024-04-28 20:14:12 发布

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

如果我有一个模块gobalcfgs包含

class Cfgs:
    ...

cfg = Cfgs()

有没有一种方法可以在一个项目中的多个模块之间共享这一点。 我有一个导入实用程序模块的主模块。所以,导入方向是

main <-- utility_1.py
main <-- utility_2.py

但是,一些全局变量和类在main中定义,并在实用程序模块中使用。目前我将它们作为函数调用中的变量,但是最好是有一个可以从所有模块访问的全局结构,而不是通过函数链发送信息

所以,与其总的来说是这样

cfg.sethost(host)
data = utility.getData(cfg)

实用的

def getData(cfg):
    getDataFromX(cfg):

def getDataFromX(cfg):
    con = openConnection(cfg):

def openConnection(cfg):
    con = mycon(cfg.host)

具有某种全局性,然后主要具有

from globalcfgs import cfg 
cfg.setHost(host)
data = utility.getData()

实用的

from globalcfgs import cfg 
def openConnection():    
    con = mycon(cfg.host)

这不完全是一个真实的例子,我已经,但应该说明,我需要船舶信息在一个长链的功能。 有可能避免这种情况吗


Tags: 模块pyhostdatamaindefcfgcon
1条回答
网友
1楼 · 发布于 2024-04-28 20:14:12

首先,不要调用类globals,因为它会隐藏内置的globals()函数。在任何情况下,Python的风格都是类使用CamelCase(大写),函数使用snake_case

除此之外,你所拥有的一切都很好。您可以在任何使用它的模块中导入cfg;唯一的问题是import语句的方式不对,应该是from globalstuff import cfg

相关问题 更多 >