モジュール レベルで作成された変数は、デフォルトで「公開」されます。
したがって、このようなモジュールには 3 つの公開変数があります。
configpath = '$HOME/.config'
class Configuration(object):
def __init__(self, configpath):
self.configfile = open(configpath, 'rb')
config = Configuration(configpath)
変数はconfigpath、Configurationおよびconfigです。これらはすべて、他のモジュールからインポート可能です。としてconfigsにアクセスすることもできます。configfileconfig.configfile
次の方法で 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そのように使用するとうまくいく可能性があります。