-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Sbaush wrote: > Ciao a tutti. Sto sviluppando una applicazione Python e mi sono trovato a > dover implementare il pattern Singleton, seguendo quanto descritto in [1]. > Ho trovato diverse soluzioni su internet già scritte quindi il mio lavoro si > è trasformato nel dover scegliere quella che sembrava adattarsi meglio alla > vera natura del problema ed alla più corretta implementazione della > soluzione.
Il mio piu' caldo, personale consiglio e' quello di evitare *assolutamente* questo design pattern in python. Produce del maligno (problemi con ereditarieta' ed ereditarieta' multipla e codice illeggibile, almeno). Non abbiamo bisogno del singleton, ne del borg. Li abbiamo gia'. Usa le classi (senza istanziarle) e gli staticmethods. Esempio: ### BEGIN ### class A: bar= 1 @staticmethod def foo(): print 'foo' @staticmethod def set_bar(value): A.bar= value @staticmethod def get_bar(): return A.bar class B(A): pass A.get_bar() A.set_bar(11) b= B() c= B() b.get_bar() c.get_bar() b.set_bar(10) c.get_bar() ### END ### Non istanziare A, usala direttamente. Puoi invece instanziare tranquillamente delle sottoclassi di A. In conclusione, il mio consiglio (da adattare piu' o meno alle tue esigenze) e': 1- dichiara una classe e dotala di tutti gli statimethods di cui necessiti. 2- quando una classe dovra' incarnare il tuo singleton, basta ereditare. - -- efphe Today is Boomtime, the 14th day of Discord in the YOLD 3173 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQFGCv9Vi7obm7aBjHcRAjbNAJ4srvslbZw7qTXf5fPRWqQM0/sdOACcC1Py QHRjh6apBi6TfEyJDqkW5F4= =1PGi -----END PGP SIGNATURE----- _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python