Patrón de diseño Singleton en Python

แชร์
ฝัง
  • เผยแพร่เมื่อ 7 พ.ย. 2024

ความคิดเห็น • 17

  • @alonsom.donayre1992
    @alonsom.donayre1992 4 ปีที่แล้ว +2

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

  • @xelisconcorde
    @xelisconcorde 4 ปีที่แล้ว

    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__

  • @juliocarrillo7329
    @juliocarrillo7329 5 ปีที่แล้ว +1

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

    • @daylisirte
      @daylisirte 4 ปีที่แล้ว

      Aca te dejó un tutorial de PYTHON desde CERO A MASTER, no hace faltas que sepas algo de programación, si te gusta el video dale like, suscribite, y compartilo, me ayudaras mucho:
      th-cam.com/video/sNdMX_3Vxh0/w-d-xo.html

  • @doctorfhernandez1
    @doctorfhernandez1 ปีที่แล้ว

    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.

  • @kvelez
    @kvelez 11 หลายเดือนก่อน

    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)

  • @nachoa.g.4655
    @nachoa.g.4655 5 ปีที่แล้ว +2

    Que username tiene al final el objeto instanciado?

  • @jseh_
    @jseh_ 5 ปีที่แล้ว +2

    cls es como el this de toda la vida?

    • @williamsgaleano8347
      @williamsgaleano8347 4 ปีที่แล้ว +6

      No, el this de toda la vida sería el "self" en python .

  • @dustsharp4971
    @dustsharp4971 4 ปีที่แล้ว +1

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

  • @kvelez
    @kvelez 11 หลายเดือนก่อน

    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)

  • @lizandro_mendoza
    @lizandro_mendoza 5 ปีที่แล้ว

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

    • @joseivanpalominorodriguez1427
      @joseivanpalominorodriguez1427 5 ปีที่แล้ว +1

      Yo las uso para ahorrar memoria, ya que las implementó en librerías. Ejemplo una clase que te ayude a calcular en tiempo real el precio de un producto, para instanciarlo n* veces lo haces singleton.

    • @josejaguirre88
      @josejaguirre88 5 ปีที่แล้ว +2

      Esto tiene que ver con el diseño orientado a objetos, sabes que una instancia de una clase requiere de memoria para estar alojada, cada vez que tu usas la instanciación creas un espacio en memoria, si tuvieras la clase Carro y requieres 5 carros cada uno con sus propiedades y atributos específicos los creas en 5 variables uno por uno.
      Pero hay ciertas clases que agrupan funcionalidad no repetitiva, imagínate que tuvieras una clase llamada Registro, en donde tiene un método (función) que necesita usar un objeto de tipo Carro como argumento, ese tipo de clases que solo agrupan funcionalidades no requieren de tener nada más que un espacio en memoria.
      Te preguntarás por que ? Bueno por que sería un mal diseño instanciar 5 veces la clase Registro si las 5 instancias hacen lo mismo que es registrar un carro, en el caso de los carros no por que puedes tener un mustang, audi etc...
      Entonces para la creación de ciertos objetos que pertenecen a una clase determinada en donde siempre se hagan las mismas operaciones y requieras que la memoria este optima se utiliza el patrón singleton, recordando que es un patrón de diseño de tipo creacional el cual te indica que en una clase determinada solo puede haber una instancia para garantizar el uso de memoria.

    • @pablogonzalezrobles4429
      @pablogonzalezrobles4429 4 ปีที่แล้ว +1

      Yo lo uso en códigos para dispositivos electrónicos. Sólo hay una sóla placa madre (arduino, rpi, etc) pero se usan los pines en todo el script. Como el pin está conectado a un led en todo lugar del script y eso no va a cambiar, pues, usar un singleton para el Board y listo. Así, se puede usar en todo momento y lugar del script