Skip to content

Commit f732f58

Browse files
authored
Merge pull request #8828 from mhayhem/main
#23 - python
2 parents f53ae99 + a3ac378 commit f732f58

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# EJERCICIO:
2+
# Explora el patrón de diseño "singleton" y muestra cómo crearlo
3+
# con un ejemplo genérico.
4+
5+
class Singlenton:
6+
_instance = None # Variable de clase para guardar la instancia
7+
8+
def __new__(cls):
9+
# Si no existe una instancia se crerara
10+
if cls._instance is None:
11+
cls._instance = super().__new__(cls)
12+
return cls._instance # Siempre devolvemos la misma instancia
13+
def __init__(self, value=None):
14+
# Solo inicializamos una vez
15+
if not hasattr(self, "initialized"):
16+
self.initialized = True
17+
self.value = value
18+
19+
20+
21+
# DIFICULTAD EXTRA (opcional):
22+
# Utiliza el patrón de diseño "singleton" para representar una clase que
23+
# haga referencia a la sesión de usuario de una aplicación ficticia.
24+
# La sesión debe permitir asignar un usuario (id, username, nombre y email),
25+
# recuperar los datos del usuario y borrar los datos de la sesión.
26+
27+
class User:
28+
_instance = None
29+
30+
31+
def __new__(cls,*args, **kwargs):
32+
if cls._instance is None:
33+
cls._instance = super().__new__(cls)
34+
return cls._instance
35+
36+
def __init__(self, id, username, name, mail):
37+
self.id: int = id
38+
self.username: str = username
39+
self.name: str = name.capitalize()
40+
self.mail: str = mail
41+
def __str__(self):
42+
return f"ID: {self.id}, Username: {self.username}, Nombre: {self.name}, Email: {self.mail}"
43+
44+
def clear_session(self):
45+
self.id = None
46+
self.username = None
47+
self.name = None
48+
self.mail = None

0 commit comments

Comments
 (0)