alguien me puede decir por qué esto es incorrecto como patrón de singleton: class preSingleton(object): def __call__(self): return self singleton = preSingleton() # singleton is actually the singleton a = singleton() b = singleton() print a==b a.var_in_a = 100 b.var_in_b = ‘hello’ print a.var_in_b print b.var_in_a Edición: El código anterior se imprime: True hello 100 […]
Me topé con la red y encontré estos interesantes códigos: http://code.activestate.com/recipes/66531/ class Borg: __shared_state = {} def __init__(self): self.__dict__ = self.__shared_state # and whatever else you want in your class — that’s all! Entiendo lo que es un singleton pero no entiendo ese código en particular cortado. ¿Podría explicarme cómo / donde “__shared_state” incluso se […]
Hay muchas preguntas relacionadas con el uso del patrón Singleton en python, y aunque esta pregunta podría repetir muchos de los aspectos ya discutidos, no he encontrado la respuesta a la siguiente pregunta específica. Supongamos que tengo una clase MyClass que quiero instanciar solo una vez exactamente. En Python puedo hacer esto de la siguiente […]
Estoy usando el siguiente código, con generadores nesteds, para iterar sobre un documento de texto y devolver ejemplos de capacitación usando get_train_minibatch() . Me gustaría persistir (encurtir) los generadores, para poder volver al mismo lugar en el documento de texto. Sin embargo, no se pueden encoger los generadores. ¿Existe una solución alternativa sencilla para poder […]
Estoy creando una aplicación Python que incluye comunicación de socket con un servidor. Me gustaría tener un módulo que pueda usarse en toda mi aplicación (varios otros módulos). Actualmente mi módulo se ve así: class SocketCommunication: def __init__(self): self.socketIO = SocketIO(settings.ADDRESS, settings.PORT, Namespace) def emit(self, message, data): json_data = json.dumps(data.__dict__) self.socketIO.emit(message, json_data) class Namespace(BaseNamespace): def […]
Tengo una clase subyacente que quiero colocar en algún código. Solo quiero que se cree una instancia o que se inicie una vez para una aplicación determinada, aunque podría llamarse muchas veces. El problema con el código siguiente es que LowClass se inicia una y otra vez. Solo quiero que empiece una vez por prueba […]
class Singleton(type): def __init__(self, *args, **kwargs): print ‘calling __init__ of Singleton class’, self print ‘args: ‘, args print ‘kwargs: ‘, kwargs super(Singleton, self).__init__(*args, **kwargs) self.__instance = None def __call__(self, *args, **kwargs): print ‘running __call__ of Singleton’, self print ‘args: ‘, args print ‘kwargs: ‘, kwargs, ‘\n\n’ if self.__instance is None: self.__instance = super(Singleton, self).__call__(*args, **kwargs) […]
quiero Stats.singleton.twitter_count += 1 y pensé que podía hacer class Stats: singleton_object = None @property @staticmethod def singleton(): if Stats.singleton_object: return Stats.singleton_object Stats.singleton_object = Stats() return Stats.singleton() Pero lanza una excepción: >>> Stats.singleton.a = “b” Traceback (most recent call last): File “”, line 1, in TypeError: ‘property’ object has only read-only attributes (assign to .a)
Vi muchos métodos para hacer un singleton en Python e intenté usar la implementación de metaclase con Python 3.2 (Windows), pero no parece que devuelva la misma instancia de mi clase de singleton. class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) return cls._instances[cls] class […]
Estoy aprendiendo Python y he estado tratando de implementar una clase de tipo Singleton como prueba. El código que tengo es el siguiente: _Singleton__instance = None class Singleton: def __init__(self): global __instance if __instance == None: self.name = “The one” __instance = self else: self = __instance Esto funciona en parte, pero la parte self […]