Python声明了几个模块可以访问的全局类

时间:2017-06-06 08:16:54

标签: 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)

将cfg作为某种全局,然后在主

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

并在实用程序中

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

这不是我现实生活中的一个例子,但应该说明我需要通过长链函数传递信息。 有可能避免这种情况吗?

1 个答案:

答案 0 :(得分:2)

首先,不要调用类globals,因为它会影响内置的globals()函数。在任何情况下,Python风格是类使用CamelCase - 使用初始大写 - 并且函数使用snake_case

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