Tengo problemas para implementar un borg en python. Encontré un ejemplo en una respuesta al this question pero no funciona para mí, a menos que me falta algo. Aquí está el código:Problema con el patrón de bordado Python
class Config:
"""
Borg singleton config object
"""
__we_are_one = {}
__myvalue = ""
def __init__(self):
#implement the borg pattern (we are one)
self.__dict__ = self.__we_are_one
self.__myvalue = ""
def myvalue(self, value=None):
if value:
self.__myvalue = value
return self.__myvalue
conf = Config()
conf.myvalue("Hello")
conf2 = Config()
print conf2.myvalue()
Asumo esto está destinado a imprimir "Hola", pero para mí sólo imprime una línea en blanco. ¿Alguna idea de por qué esto podría ser?
¿Por qué usa nombres dobles __ para sus atributos? Una única línea _ hará para que sea "privada". –
Bueno, copié el código de la otra pregunta a la que me he vinculado. Pero, de todos modos, pensé que un solo _ insinuaba que era privado, mientras que un doble _ causaba un cambio de nombre que es una pista aún más fuerte de que * realmente * es privado, aunque todavía se puede acceder si se determina al usuario. – chrism1
¡No! Los caracteres de subrayado iniciales NO los harán privados, solo haga que las variables de nivel de módulo no se importen en 'de importación foo *' De lo contrario, no tiene otro efecto que el de 'insinuar' la privacidad. –