モジュール レベルで作成された変数は、デフォルトで「公開」されます。
したがって、このようなモジュールには 3 つの公開変数があります。
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
次の方法で 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
そのように使用するとうまくいく可能性があります。