この記事は最終更新日から1年以上が経過しています。
    
ディレクトリ構成は前回と同じ構成となります。
コード
| #!/usr/bin/env python # -*- coding: utf-8 -*- from configparser import ConfigParser class App(object):     _instance = None     def __new__(cls):         if cls._instance is None:             cls._instance = object.__new__(cls)             cls._instance.config = ConfigParser()             cls._instance.config.read('./sample.ini')         return cls._instance def main():     app = App()     print('名前は', app.config['cat']['name'])     print('名前は', app.config['dog']['name'])     app2 = App()     print('名前は', app2.config['cat']['name'])     print('名前は', app2.config['dog']['name'])     print(app is app2) if __name__ == '__main__':     main() | 
設定ファイル
| [dog] name = inu [cat] name = neko | 
出力
| 名前は neko 名前は inu 名前は neko 名前は inu True | 
マルチスレッドで動かす場合、これで問題ないか?と意見をもらいまして
マルチスレッドに対応したコード書いてみました。
コード
| #!/usr/bin/env python # -*- coding: utf-8 -*- import threading from configparser import ConfigParser class App(object):     _instance = None     _lock = threading.Lock()     def __new__(cls):         with cls._lock:             if cls._instance is None:                 cls._instance = object.__new__(cls)                 cls._instance.config = ConfigParser()                 cls._instance.config.read('./sample.ini')         return cls._instance | 
この記事を書いた人

最近書いた記事
 2017.11.13Boto3を使ったら空文字のままだとDynamoDBにデータが入れられなかった話 2017.11.13Boto3を使ったら空文字のままだとDynamoDBにデータが入れられなかった話
 2017.08.24Pythonでユニットテスト書いてみる 2017.08.24Pythonでユニットテスト書いてみる
 2017.06.20Pythonで設定ファイルを読み込んでみる(YAMLファイル) 2017.06.20Pythonで設定ファイルを読み込んでみる(YAMLファイル)
 2017.05.22PythonでXMLの要素を削除する 2017.05.22PythonでXMLの要素を削除する






