Pull to refresh

Comments 7

Про синглтон оч понравилось. Сам пытался реализовывать синглтон на питоне. Делал через callable классы. Реализация на метаклассах выглядит намного изящнее :)
Я такой синглетон использую, хотя конечно формально это не настоящий синглетон.
<code>class Shared(object):
    __shared = None
    def __init__(self):
        if Shared.__shared is None:
            __shared = self.__dict__
        else:
            self.__dict__ = __shared </code>
всётаки, расскажите подробнее про __mro__, множественное наследование,
и особенно про засаду со множественным наследованием от классов с разными метаклассами.
Забавно, но мне кажется или ты действительно взял код синглтона из немного нашумевшего в русском Python-сообществе проекта Agatsuma?
bitbucket.org/FeiWongReed/agatsuma/src/2ce774d5c31a/agatsuma/commons/types/singleton.py
Тем не менее, у меня там более интересная версия, поддерживающая более удобный метод обращения с синглтонами — через __call__(инициализация обязана быть произведена заранее).

А так спасибо за такую серию статей, сам только начинал писать у себя в блоге, но ты меня избавил от такого труда.
Поправь «c() <=> type©.__call__(с)» на «c() <=> type(с).__call__(с)».
Стоит добавить в начале статьи что использование всей этой магии хакинга питона есть возможность при крайней необходимости и всю работу с ней нужно выносить в отдельный модуль с обильными комментариями и доктестом(как минимум).

Было бы хорошо почитать обзор изменений объектной модели Python в Python3.
> Забавно, но мне кажется или ты действительно взял код синглтона из немного нашумевшего в русском Python-сообществе проекта Agatsuma?

Нет.

> Поправь «c() <=> type©.__call__(с)» на «c() <=> type(с).__call__(с)».

Спс. Поправил.
документация говорит, что изменения словаря, возвращённого функцией locals() не обязательно будут применены. Не стоит пользоваться этим способом :)
Да, конечно, в этой ситуации лучше бы использовать exec. Это был просто пример, показывающий возможнности конструкции class. И, естественно, прежде чем так писать в реальной жизни стоит очень и очень сильно подумать, а действительно ли оно надо.
Only those users with full accounts are able to leave comments. Log in, please.