Cita:
Iniciado por razpeitia Si al menos corriste el programa te habrás dado cuenta que imprimir __dominio arroja un error, por que es una variable privada.
Entonces lo que estas haciendo estas encapsulando tu variable privada __dominio y la estas exponiendo al mundo por medio de la propiedad dominio.
Buenas sigo teniendo problemas, si el elemento
a con el valor "Soy un dominio nuevo" lo intento sustituir en el diccionario por el valor antiguo, no se guarda y se mantiene al valor antiguo en esa variable con los __, si ejecuto el mismo codigo quitando los __ se ejecuta correctamente.
Código:
class Sujeto:
def __init__(self, ip, dominios):
self.__dominios = dominios
self.__ip=ip
def __str__(self):
return "IP=>%s DOMINIOS=> %s" % (self.__ip, self.__dominios)
@property
def ip(self):
return self.__ip
@ip.setter
def ip(self, valor):
self.__ip = valor
@property
def dominios(self):
return self.__dominios
@dominios.setter
def dominios(self, valor):
self.__dominios = valor
obj1 = Sujeto("192.13.12.11", "gmal.com:gmail.es:gmail.net")
diccionario = {}
diccionario[obj1.ip] = obj1
a = diccionario.get("192.13.12.11")
print a
a.dominios="Soy un dominio nuevo"
diccionario[a.ip] = a
b= diccionario.get("192.13.12.11")
print b
Imprime erroneamente
Cita: IP=>192.13.12.11 DOMINIOS=> gmal.com:gmail.es:gmail.net
IP=>192.13.12.11 DOMINIOS=> gmal.com:gmail.es:gmail.net
Sin embargo, si hago exactamente el mismo codigo pero quitando los __ funciona como quiero y actualiza correctamente el diccionario
Código:
class Sujeto:
def __init__(self, ip, dominios):
self.dominios = dominios
self.ip=ip
def __str__(self):
return "IP=>%s DOMINIOS=> %s" % (self.ip, self.dominios)
@property
def ip(self):
return self.ip
@ip.setter
def ip(self, valor):
self.ip = valor
@property
def dominios(self):
return self.dominios
@dominios.setter
def dominios(self, valor):
self.dominios = valor
obj1 = Sujeto("192.13.12.11", "gmal.com:gmail.es:gmail.net")
diccionario = {}
diccionario[obj1.ip] = obj1
a = diccionario.get("192.13.12.11")
print a
a.dominios="Soy un dominio nuevo"
diccionario[a.ip] = a
b= diccionario.get("192.13.12.11")
print b
Imprime correctamente
Cita: IP=>192.13.12.11 DOMINIOS=> gmal.com:gmail.es:gmail.net
IP=>192.13.12.11 DOMINIOS=> Soy un dominio nuevo