默认情况下,在模块级别创建的任何变量都是“公开的”。
因此,像这样的模块将具有三个公开的变量:
configpath = '$HOME/.config'
class Configuration(object):
def __init__(self, configpath):
self.configfile = open(configpath, 'rb')
config = Configuration(configpath)
变量configpath
是Configuration
和config
。所有这些都可以从其他模块导入。您也可以将config
s访问configfile
为config.configfile
.
您还可以通过这种方式全局访问配置文件:
configpath = '$HOME/.config'
configfile = None
class Configuration(object):
def __init__(self, configpath):
global configfile
configfile = open(configpath, 'rb')
config = Configuration(configpath)
但是这有很多棘手的问题,就好像你configfile
从另一个模块得到一个句柄,然后从Configuration
你原来的句柄中替换它不会改变。因此,这只适用于可变对象。
在上面的示例中,这意味着configfile
以这种方式作为全局使用不会很有用。但是,config
像这样使用可以很好地工作。