Паттерн Singleton (Одиночка) в Python
ฝัง
- เผยแพร่เมื่อ 20 มี.ค. 2023
- Singleton (Одиночка) - это шаблон предоставления глобального доступа к состоянию, гарантируется, что объект всегда будет один и тот же.
Нужен для одной точки доступа к ресурсам/данным и для того чтобы ресурсоемкие задачи сделать 1 раз
Monostate - это шаблон предоставления глобального доступа к состоянию, объекты при этом могут быть разными.
+ плюсы: 1 раз выполняем тяжелые задачи, имеем 1 вход для всей системы
- минусы: общесистемная глобальная переменная
Модуль в python -это синглтон! Потому нам никуда от них не деться, даже если считать синглтон анти-паттерном
👉Декоратор с параметрами • Декоратор с параметрами
👍Первый декоратор, разбираемся с написанием • Первый декоратор, разб...
Читать: www.oreilly.com/library/view/...
Присоединяйтесь к помощи каналу, будет интересно)
✔️Бусти boosty.to/python_russian/donate
✔️Юмани 410011506612886
Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
#Python #PythonRussian #PyCharm
Друзья, 60% моих зрителей не подписаны на канал, не жалейте 1 клика для продолжения съемок контента. Это вам ничего не стоит, а мне приятно. Спасибо!
Все подписывайтесь! Нам очень нужно продолжение контента! 😊
Поддерживаю. Видео про декораторы мне очень помогло в свое время
Паттерны, пошла жара. Максимальная поддержка автору
Прошу продолжать делать видео по паттернам!
как всегда: контент пушка вышка. Огромная благодарность за труды.
Очень метко замечено про засыпание на 5й странице книги Банды Четырёх, и про то, что для реального усвоения нужна проблема... 100% совпадает с личным опытом ;)
Сразу вспомнил момент, когда (в детстве) нечаянно наступил на швабру.
Как же мне пере#б@ло тогда по лбу... Ай-яй-яй-яй-яй. 😅😂
Только начал изучить различные паттерны и тут этот замечательный ролик. Спасибо за ваши труды!
Благодарю ты действительно лучший !!
Гениально!!
Спасибо большое за материал.
Очень доходчиво и понятно.
Отличная работа. Большое спасибо!
Для подготовки к сессии самое то, спасибо вам за проделанный труд!!!
Обожаю тебя! Стал спонсором! Не прекращай делать видео, пожалуйста
спасибо =) я и не собираюсь прекращать, единственное - часто делать не могу, занятость. А тем в питоне, о которых хотелось бы рассказать - очень много, постоянно приходится выбирать.
Спасибо Вам большое, очень полезно, информативно и понятно
Спасибо, смотрю ваши ролики с удовольствием. Все понятно и без лишней воды. Про синглтон знал, а вот про моностейт как-то до этого проходило мимо. Хотя идея реализации проста и по своему гениальна
да, моностейт это по сути взгляд на проблему с другой стороны, что порой бывает полезно
как всегда самый лучший
Круто Спасибо!
к хорошему качественному видео по программированию на языке python хочется писать хорошие комментарии)
не сдерживай себя)
День добрый! Давно искал подобный подход, который ровно ложится в голове. Спасибо Вам огромное!
P.S. в надежде выйти на такой же уровень проектирования и программирования.
выйдешь, не сомневайся, если поставить цель и регулярно заниматься. И не думать, что можно в одночасье все получить, посмотреть курс и готово. Это все с опытом, то есть с определенным потраченным временем придет.
@@PythonRussian будут ли видео по асинхронности и многопоточности?
@@vedroidek думаю можно как минимум обзорное про GILи потоки, а асинк отдельно
@@PythonRussian GIL в теории будет или разбор на плюсах? )))
Спасибо. Хорошие объяснения. Давайте еще про паттерны!
Singletone.instance ведь можно заменить cls.instance ?
заменить можно. Про паттерны не так просто снимать, потому что надо демонстрировать реальную проблему, понятную пользователям.
Не поняла смысл этого хака с переопределением словаря с атрибутами экземпляра. Во первых там много всего нужного лежит обычно, поэтому уж лучше тогда обновлять дикт. А второе если есть данные в переменной класса, зачем эту переменную тянуть еще и в экземпляр, у экземпляра и так есть доступ к переменной класса. А в целом спасибо и успехов.
Немного не понял в каких случаях лучше воспользоваться Monostate вместо Singleton. По идеи Singleton лучше тем, что он не будет занимать дополнительную память, в отличие от Monostate. А в чём тогда преимущество Monostate кроме того, что его легче написать?
я скорее хотел показать, что существует второй взгляд на проблему. Да, синглтон всего 1 и значит не займет память, но и моностейт, поскольку разделяет одно и то же состояние займет лишь немногим больше. Алекс Мартелли указывал на то, что мы акцентируемся на том, что неважно, а именно на том чтобы был 1 объект, хотя по идее нам не это критично, а только состояние. Но конечно в проде лучше писать Синглтон, а не Моностейт, в силу того, что просто команда не поймет, ибо первый знают все, а второй во всей команде будешь знать только ты =)
@@PythonRussian Спасибо за ответ! Буду ждать другие видео про паттерны в python. Тема очень интересная.
А почему в классе Singleton, в методе __new__(), используется именно имя класса, а не ссылка на него в cls? В этом есть какой-то смысл или просто так?
в этом есть смысл, попробуй понять в чем разница
@@PythonRussian насколько я понимаю, есть разница для наследования. В случае использования явной ссылки на Singleton, все сабклассы будут одним объектом, на которой указывает instance. Потому что мы обращались к конкретному классу, а cls это именно текущий класс. Но я не понимаю зачем это надо. Кажется если мы наследуемся от Singleton-а, то каждый из наследников должен быть самостоятельным классом с соответствующим паттерном. Или я что-то упускаю и не понимаю?
😙
Monostate или Borg?
первое
@@PythonRussian между ними есть какая-то разница? Потому что мне показалось, что это название для одного и того же.