Source code for jconfig.base

# -*- coding: utf-8 -*-
"""
:authors: python273
:license: Apache License, Version 2.0, see LICENSE file

:copyright: (c) 2019 python273
"""


[docs]class BaseConfig(object): """ Абстрактный базовый класс конфигурации. У наследуемых классов должен быть определен `__slots__` :param section: имя подкатегории в конфиге :param \*\*kwargs: будут переданы в :func:`load` """ __slots__ = ('section_name', '_settings', '_section') def __init__(self, section, **kwargs): self.section_name = section self._settings = self.load(**kwargs) self._section = self._settings.setdefault(section, {}) def __getattr__(self, name): return self._section.get(name) __getitem__ = __getattr__ def __setattr__(self, name, value): try: super(BaseConfig, self).__setattr__(name, value) except AttributeError: self._section[name] = value __setitem__ = __setattr__ def setdefault(self, k, d=None): return self._section.setdefault(k, d) def clear_section(self): self._section.clear()
[docs] def load(self, **kwargs): """Абстрактный метод, должен возвращать dict с конфигом""" raise NotImplementedError
[docs] def save(self): """Абстрактный метод, должен сохранять конфиг""" raise NotImplementedError