Ecrire un singleton en langage python
De Wikip
Révision datée du 17 février 2010 à 22:23 par Atoross (discussion | contributions) (Nouvelle page : {{Introduction |texte=Voici un petit code écrit en python qui explique comment écrire un singleton en langage python. Notez bien que dans la méthode __init__ il faut faire quelque...)
Auteurs :
Arthur TOROSSIAN
Résumé :
Voici un petit code écrit en python qui explique comment écrire un singleton en langage python. Notez bien que dans la méthode __init__ il faut faire quelques vérifications notamment avec les listes.
Voici un petit code écrit en python qui explique comment écrire un singleton en langage python. Notez bien que dans la méthode __init__ il faut faire quelques vérifications notamment avec les listes.
class CSingleton( object ):
class_instance = None
def __init__( self, a ):
print "CSingleton init"
self.vitesse = a
if not hasattr( self, "alist") :
self.alist = list()
def __new__( typ, *args, **kwargs ):
print "CSingleton new", typ.class_instance
if typ.class_instance == None :
obj = object.__new__( typ, *args, **kwargs)
typ.class_instance = obj
else :
obj = typ.class_instance
return obj
def addObject(self, obj):
self.alist.append( obj )
if __name__ == '__main__' :
a = CSingleton( 1 )
a.addObject( "Lundi" )
print "a.vitesse=",a.vitesse
print "a.alist=",a.alist
b = CSingleton( 2 )
b.addObject( "Mardi" )
print "b.vitesse=",b.vitesse
print "b.alist=",b.alist
c = CSingleton( 3 )
c.addObject( "Mercredi" )
print "c.vitesse=",c.vitesse
print "c.alist=",c.alist
print "a.vitesse=",a.vitesse
print "a.alist=",a.alist
print "b.vitesse=",b.vitesse
print "b.alist=",b.alist
print "c.vitesse=",c.vitesse
print "c.alist=",c.alist
print "id(a)=",id(a)
print "id(b)=",id(b)
print "id(c)=",id(c)
Ce qui donne :
python singleton.py
CSingleton new None
CSingleton init
a.vitesse= 1
a.alist= ['Lundi']
CSingleton new <__main__.CSingleton object at 0xb7cf8ecc>
CSingleton init
b.vitesse= 2
b.alist= ['Lundi', 'Mardi']
CSingleton new <__main__.CSingleton object at 0xb7cf8ecc>
CSingleton init
c.vitesse= 3
c.alist= ['Lundi', 'Mardi', 'Mercredi']
a.vitesse= 3
a.alist= ['Lundi', 'Mardi', 'Mercredi']
b.vitesse= 3
b.alist= ['Lundi', 'Mardi', 'Mercredi']
c.vitesse= 3
c.alist= ['Lundi', 'Mardi', 'Mercredi']
id(a)= 3083833036
id(b)= 3083833036
id(c)= 3083833036