Skip to content

Commit 8a21ca0

Browse files
authored
Merge pull request #8161 from Gordo-Master/#23-Python
#23-Python
2 parents d525d3e + 98a3735 commit 8a21ca0

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# Singleton
2+
3+
# Patron de diseño, donde la clase solo genera una instancia, que es unica y tenga un punto acceso global
4+
5+
"""
6+
Sirve para:
7+
1- Gestión de configuración
8+
2- Conexión a base de datos
9+
3- Registro de logs
10+
4- Controladores de cache
11+
"""
12+
13+
class Singleton:
14+
_instance = None
15+
16+
def __new__(cls):
17+
if cls._instance is None:
18+
cls._instance = super(Singleton, cls).__new__(cls)
19+
return cls._instance
20+
21+
22+
obj_1 = Singleton()
23+
obj_2 = Singleton()
24+
25+
print(obj_1 is obj_2)
26+
27+
28+
"""
29+
Ejercicio extra
30+
"""
31+
32+
class UserSession:
33+
_instance = None
34+
35+
def __new__(cls):
36+
if cls._instance is None:
37+
cls._instance = super(UserSession, cls).__new__(cls)
38+
cls._instance.init_data()
39+
return cls._instance
40+
41+
def init_data(self):
42+
self._id = None
43+
self.user_name = None
44+
self._name = None
45+
self.email = None
46+
47+
def set(self, _id, user_name, _name, email):
48+
self._id = _id
49+
self.user_name = user_name
50+
self._name = _name
51+
self.email = email
52+
53+
def get_data(self):
54+
print("Datos del usuario: ")
55+
print(f"Id: {self._id}")
56+
print(f"User name: {self.user_name}")
57+
print(f"Name: {self._name}")
58+
print(f"Email: {self.email}")
59+
60+
def close_session(cls):
61+
print("Cerrando sesión...")
62+
cls.init_data()
63+
64+
sesion1 = UserSession()
65+
sesion1.set("01","Gordo-Master","Gordo","gordomaster@gmail.com")
66+
sesion1.get_data()
67+
68+
print("Prueba con otro")
69+
sesion2 = UserSession()
70+
sesion2.get_data()
71+
72+
sesion1.close_session()
73+
sesion1.get_data()
74+
print(sesion1)
75+
76+
77+

0 commit comments

Comments
 (0)