[pyar] Sobre grafos, nodos y objetos
Jose Jachuf
jjachuf en gmail.com
Sab Nov 6 10:28:25 ART 2010
El día 6 de noviembre de 2010 07:15, Tordek <kedrot en gmail.com> escribió:
>> ¿Está mal algo referente a __eq__ y __hash__ en la clase Nodo?
>
> No... simplemente que la igualdad de los nodos se revisa via __hash__ y
> __eq__, no porque su id sea igual.
Precisamente por eso uso __eq__ y __hash__ para garantizar que dos
nodos con los mismos x,y sean iguales. Y parece funcionar con la
mayoría de los nodos (ver nodos: 103, 106, 110)
>
>>>> a = 15000
>>>> b = 15000
>>>> id(a)
> 38994944
>>>> id(b)
> 38995088
>
> # mismo valor, distintos IDs. números simples así no hay que preguntarse
> sobre si las funciones están bien
Entiendo, si la clase Nodo no tuviera __eq__ y __hash__ también
tendría el mismo comportamiento.
n1 = NodoSimple(10, 3, 4)
n2 = NodoSimple(10, 3, 4)
print n1==n2 #Esto retorna verdadero
Si modificamos _agregar_nodos_simples de esta manera
for i in range(100):
n1 = NodoSimple(10, 3, 4)
n2 = NodoSimple(10, 3, 5)
self._grafo.add_edge(n1, n2)
El grafo contendrá un arco y dos nodos, que es como espero que funcione.
Jose
More information about the pyar
mailing list