import logging class Logger(object): """ Class logger singleton """ def __new__(self): if not hasattr(self, '_logger'): self._logger = logging.getLogger('log checker') console_handler = logging.StreamHandler() console_handler.setFormatter(logging.Formatter('%(asctime)s: %(name)s - %(levelname)s: %(message)s')) self._logger.addHandler(console_handler) return self._logger
Пока что всё работает как надо. Но смущает одна вешь - в паттерне синглтона из википедии там ещё вызывалась функция super, и тогда инстансу класса присваивался результат вызова…
Также видел ещё один вариант - внутри класса ещё один класс, который как будто синглтон, и тогда без суперов всё обходилось и то сё…
В общем, что хотелось бы услышать от вас - так как же правильно реализовать одиночку для логгирования и зачем там тот супер. В общем, на пальцах объяснить работу с синглтоном, если можно.