[pyar] patrón Singleton

Alberto Leonhell Silveira Gazzano leonhell en gmail.com
Mar Ene 11 22:10:44 ART 2011


Estimados, estoy tratando de implementar este patrón para poder usarlo en la
conexión a una base de datos (entre otras cosas). Como soy nuevo en python
me gustaría que me dieran algún consejo para encarar esto. En principio hice
los siguientes módulos muy básicos de prueba (googleando un poco claro...):

EJEMPLO 1:
class CSingleton(object):

    instance = 0

    def __init__(self):
        # set variables to whatever
        print "Inicializando Singleton"

    @staticmethod
    def getInstance():
        if CSingleton.instance==0:
            CSingleton.instance=CSingleton()
        return CSingleton.instance


if __name__ == '__main__':
    s1=CSingleton.getInstance()
    s2=CSingleton.getInstance()
    if(id(s1)==id(s2)):
        print "La misma instancia!!"
    else:
        print "Instancias diferentes!!"

EJEMPLO 2:

class Singleton (object):
    instance = None
    def __new__(cls, *args, **kargs):
        if cls.instance is None:
            cls.instance = object.__new__(cls, *args, **kargs)
        return cls.instance

    def __init__(self, *args, **kwargs):
        print "Inicializando Singleton"


if __name__ == '__main__':
    s1=Singleton()
    s2=Singleton()
    if(id(s1)==id(s2)):
        print "La misma instancia!!"
    else:
        print "Instancias diferentes!!"

El problema es que en el primero no he podido declarar privado el
constructor de la clase (como en otros lenguajes). El segundo parece
piola... ¿Con qué problema me puedo encontrar? ¿alternativas (la de
metaclases no me gusta :-) )?

Gracias desde ya.

Alberto Silveira.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110111/da26b5cd/attachment.html>


More information about the pyar mailing list