[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