Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 04.11.2022
Сообщений: 15

Реализация паттерна Синглтон

04.11.2022, 10:46. Показов 6617. Ответов 3

Студворк — интернет-сервис помощи студентам
Задача 5. Синглтон
Что нужно сделать

Синглтон — это порождающий паттерн проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа. Синглтонами мы уже пользовались, к ним относятся, например, None, True и False. Именно потому, что None является синглтоном, мы можем использовать оператор is — он возвращает True только для объектов, представляющих одну и ту же сущность.

Реализуйте декоратор singleton, который превращает класс в одноэлементный. То есть при множественной инициализации объекта этого класса будет сохранён только первый инстанс, а все остальные попытки создания будут возвращать первый экземпляр.



Пример кода:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@singleton
class Example:
    pass
 
 
my_obj = Example()
my_another_obj = Example()
 
 
print(id(my_obj))
print(id(my_another_obj))
 
 
print(my_obj is my_another_obj)

Результат:

1986890616688

1986890616688

True



Что оценивается

Результат вычислений корректен.
Формат вывода соответствует примеру.
Переменные, функции и собственные методы классов имеют значащие имена, не a, b, c, d.
Классы и методы/функции имеют прописанную документацию.
Есть аннотация типов для методов/функций и их аргументов (кроме args и kwargs). Если функция/метод ничего не возвращают, то используется None.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.11.2022, 10:46
Ответы с готовыми решениями:

В проекте "Фильмы" реализовать три паттерна: адаптер, синглтон, прокси
Всем привет. Есть проект "Фильмы", в котором три уровня наследования. Теперь надо в этом проекте реализовать три паттерна: адаптер,...

Реализация паттерна MVC
Доброго времени суток. Допустим у меня есть класс Database в котором 2 метода: class Database { public OleDbConnection...

Реализация паттерна Singleton
Добрый день. Необходимо реализовать класс Storage, объект которого будет единственным в программе. Для достижения данной цели было выбрано...

3
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
04.11.2022, 11:07
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def singleton(cls):
    def wrapped():
        if cls.tmp is None:
            instance = cls()
            cls.tmp = instance
            return instance
        return cls.tmp
    cls.tmp = None
    return wrapped
 
 
@singleton
class Example:
    pass
 
 
my_obj = Example()
my_another_obj = Example()
 
print(id(my_obj))
print(id(my_another_obj))
 
print(my_obj is my_another_obj)
2
3 / 3 / 0
Регистрация: 27.10.2022
Сообщений: 7
06.11.2022, 20:55
Всем доброго времени суток, куратор не пропускает работу, требует разобраться с наследованием в этой задаче, пишет вот это:
Python
1
2
3
4
5
6
>>> class A(Example): 
...   pass
...  
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: function() argument 'code' must be code, not str
И это:
"Дам наводку: если декоратор принимает на вход класс, то он должен вернуть функцию или класс?"

Как решить проблему?

Добавлено через 3 часа 2 минуты
Чего ему вообще от меня надо?
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
06.11.2022, 21:12
spectral70,
https://webdevblog.ru/realizac... -v-python/
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.11.2022, 21:12
Помогаю со студенческими работами здесь

Реализация паттерна в java
Помогите, пожалуйста, реализовать: 1) паттерн proxy 2) паттерн prototype в коде программы, расположенной ниже: package concert; ...

Реализация паттерна Observer
Есть задача с помощью паттерна Observer сделать так чтобы каждый раз как курсор находится над консольным окном - оно как-то на это...

Реализация паттерна Стратегия
У меня задание, нужно реализовать паттерн Стратегия на примере моей программы, читал про сам паттерн, но не совсем понимаю, как реализовать...

Реализация паттерна MVVM
Добрый день, форумчане. Ни разу не пользовался данным паттерном программирования, прочитал уже кучу статей, но ни одна из них не может мне...

Реализация паттерна состояние
Парни, кто шарит, помогите реализовать паттерн. &quot;Игра перемещение по лабиринту&quot;. Как можно проще.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru