import os, json from settings import settings class settings_manager (object): __settings = None __filename = "settings.json" __data = {} def __new__(cls): if not hasattr(cls, "instance"): cls.instance = super(settings_manager, cls).__new__(cls) return cls.instance @property def data(self): return self.__data @property def settings(self): return self.__settings def convert(self): """ Заполнить объект настроек Raises: Exception: Невозможно создать экземпляр класса настроек """ if not self.__settings: self.__settings = settings() if not isinstance(self.__settings, settings): raise Exception("Невозможно создать экземпляр класса настроек") for key in self.__data.keys(): setattr(self.__settings, key, self.__data[key]) def open(self, filename): """ Открыть файл с настройками Args: filename: Имя файла Raises: TypeError: Неверный тип аргумента ValueError: Неверная длина аргумента """ if not isinstance(filename, str): raise TypeError("Неверный тип аргумента") if len(filename) == 0: raise ValueError("Неверная длина аргумента") self.__filename = filename.strip() return self.__open() def __open(self): """ Открыть файл с настройками Raises: FileNotFoundError: Ошибка при открытии файла """ file_path = os.path.split(__file__) settings_file = "%s/%s" % (file_path[0], self.__filename) if not os.path.exists(settings_file): raise FileNotFoundError("Невозможно загрузить файл настроек") with open(settings_file, "r") as read_file: self.__data = json.load(read_file) return True