-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsingleton.py
More file actions
29 lines (23 loc) · 1.23 KB
/
singleton.py
File metadata and controls
29 lines (23 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class DatabaseConnection:
"""Класс для управления подключением к базе данных"""
_instance = None
def __new__(cls):
if cls._instance is None:
print("Создание нового подключения к базе данных...")
cls._instance = super().__new__(cls)
cls._instance.connection_string = "postgresql://localhost:5432/mydb"
return cls._instance
def query(self, sql):
return f"Выполнение запроса '{sql}' через {self.connection_string}"
# Демонстрация работы паттерна
if __name__ == "__main__":
# Первое обращение - создается экземпляр
db1 = DatabaseConnection()
print(f"db1 ID: {id(db1)}")
print(db1.query("SELECT * FROM users") + "\n")
# Второе обращение - возвращается тот же экземпляр
db2 = DatabaseConnection()
print(f"db2 ID: {id(db2)}")
print(db2.query("INSERT INTO users VALUES (1, 'John')") + "\n")
# Проверка, что это один и тот же объект
print(f"db1 и db2 - это один объект?: {db1 is db2}")