Skip to content

Commit e7c2b7c

Browse files
authored
Merge pull request mouredev#4554 from avcenal/main
#23 - Python
2 parents 785b34a + 1648ffe commit e7c2b7c

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
"""
2+
EJERCICIO:
3+
* Explora el patrón de diseño "singleton" y muestra cómo crearlo
4+
* con un ejemplo genérico.
5+
"""
6+
7+
class Singleton (object):
8+
instance = None
9+
def __new__(cls):
10+
if cls.instance is None:
11+
print("Creo la instancia")
12+
cls.instance = object.__new__(cls)
13+
#sin añadir object que es algo que en Python 3 no es necesario, sería cls.instance = super(Singleton,cls).__new__(cls)
14+
else:
15+
print("No creo la instancia")
16+
return cls.instance
17+
18+
test = Singleton()
19+
test2 = Singleton()
20+
21+
print(test == test2)
22+
23+
"""
24+
DIFICULTAD EXTRA (opcional):
25+
* Utiliza el patrón de diseño "singleton" para representar una clase que
26+
* haga referencia a la sesión de usuario de una aplicación ficticia.
27+
* La sesión debe permitir asignar un usuario (id, username, nombre y email),
28+
* recuperar los datos del usuario y borrar los datos de la sesión.
29+
"""
30+
31+
class Session():
32+
instance = None
33+
34+
id: int = 0
35+
username:str = None
36+
name:str = None
37+
email:str = None
38+
39+
def __new__(cls):
40+
if cls.instance is None:
41+
cls.instance = super().__new__(cls)
42+
43+
return cls.instance
44+
45+
def set_user(self,id:int,username:str,name:str,email:str):
46+
self.id = id
47+
self.username = username
48+
self.name = name
49+
self.email = email
50+
51+
def get_data(self):
52+
print(f"- ID: {self.id}\n- Username: {self.username}\n- Nombre: {self.name}\n- Email: {self.email}")
53+
54+
def erase_data(self):
55+
self.id = 0
56+
self.username = None
57+
self.name = None
58+
self.email = None
59+
print(f"Usuario borrado")
60+
61+
62+
my_session = Session()
63+
my_session.set_user(117,"avcenal","Alex Valderrama","[email protected]")
64+
my_session.get_data()
65+
my_session_2 = Session() #No crea la instancia con estos datos
66+
my_session_2.get_data()
67+
my_session_2.erase_data()
68+
my_session.get_data()
69+

0 commit comments

Comments
 (0)