Patrón de diseño Singleton en Python

preview_player
Показать описание

🐊 Síguenos en:

----
Código Facilito es una de las plataformas de aprendizaje online de programación más grandes de habla hispana. Desde el 2010 formamos programadores en toda América Latina y España enseñando. HTML, JavaScript, React, Python, Rails, Go y mucho más.
Рекомендации по теме
Комментарии
Автор

Gracias por enseñar sobre patrones, me es muy útil.

juliocarrillo
Автор

Usando este metodo, entenderia que User deja de ser una clase correcto? ya no se podria usar __super()__ ni cls

alonsom.donayre
Автор

Me gusto mucho el vídeo; creo que la segunda forma es más legible, porque el patrón es más explicito.

Pero en el primer caso, no habría que adicionar tanta sintaxis adicional; solo agregar los parámetros *args, **kargs en donde se invoque el método constructor __new__

xelisconcorde
Автор

Que username tiene al final el objeto instanciado?

nachoa.g.
Автор

Me sale un error, dice que el objeto no es llamable

dustsharp
Автор

def singleton(cls):
instances = {} # dictionary
def wrapper(*args, **kwargs): # arguments and dictionary of arguments
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return wrapper

@singleton # decorator
class User(object):
def __init__(self, username):
self.username = username

if __name__ == '__main__':
user = User('admin')
user2 = User('guest')
print(user is user2)

kvelez
Автор

Me funcionó perfectamente... Pero como hago para aceder a los atributos?

Ejemplo:

print(user1.username)

No logré acceder a los atributos de la clase user.

doctorfhernandez
Автор

No me quedaron claros los casos de usos. Puedo decir que no entendí nada. Me gusta cuando primero explican la problemática y luego desarrollan una solución. Así queda mas aterrizado el contenido.

ArístidesPeralta-ng
Автор

Entendí pero, ¿Para qué sirve ese patrón de diseño?🤔

lizandro_mendoza
Автор

class User(object):
__instance = None

def __new__(cls):
if cls.__instance is None: # if there is no instance
cls.__instance = super().__new__(cls) # class as argument.
return cls.__instance # executed only once.

if __name__ == "__main__":
user1 = User()
user2 = User()
print(user1 is user2)

kvelez