Skip to content

Commit d19e517

Browse files
authored
Merge pull request #4192 from agusrosero/develop
#23 - Python
2 parents b2df34c + 828a444 commit d19e517

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
"""
2+
/*
3+
* EJERCICIO:
4+
* Explora el patrón de diseño "singleton" y muestra cómo crearlo
5+
* con un ejemplo genérico.
6+
*
7+
* DIFICULTAD EXTRA (opcional):
8+
* Utiliza el patrón de diseño "singleton" para representar una clase que
9+
* haga referencia a la sesión de usuario de una aplicación ficticia.
10+
* La sesión debe permitir asignar un usuario (id, username, nombre y email),
11+
* recuperar los datos del usuario y borrar los datos de la sesión.
12+
*/
13+
"""
14+
15+
# EJERCICIO:
16+
17+
18+
class Singleton:
19+
_instancia = None
20+
21+
def __new__(cls):
22+
if cls._instancia is None:
23+
cls._instancia = super(Singleton, cls).__new__(cls)
24+
return cls._instancia
25+
26+
27+
singleton1 = Singleton()
28+
singleton2 = Singleton()
29+
30+
print(singleton1 is singleton2)
31+
32+
# DIFICULTAD EXTRA:
33+
34+
35+
class Sesion:
36+
_id = ""
37+
_username = ""
38+
_nombre = ""
39+
_email = ""
40+
41+
def __init__(self, id, username, nombre, email):
42+
self._id = id
43+
self._username = username
44+
self._nombre = nombre
45+
self._email = email
46+
47+
def get_id(self):
48+
return self._id
49+
50+
def get_username(self):
51+
return self._username
52+
53+
def get_name(self):
54+
return self._nombre
55+
56+
def get_email(self):
57+
return self._email
58+
59+
def delete_data(self):
60+
self._id = ""
61+
self._username = ""
62+
self._nombre = ""
63+
self._email = ""
64+
return self
65+
66+
67+
sesion1 = Sesion(id="1", username="test1",
68+
nombre="Agustin", email="[email protected]")
69+
70+
print(f"User: {sesion1.get_username()}")
71+
print(f"Eliminando datos: {sesion1.delete_data()}")
72+
print(f"User id: {sesion1.get_id()}")

0 commit comments

Comments
 (0)