[Python] Passaggio oggetti tra classi
De Santis Luca
farolfo a hotmail.com
Ven 6 Dic 2013 18:35:16 CET
Vi ammorbo ancora con gli alberi. Devo fare una funzione per trovare il path di una qualsiasi foglia di un albero.
Per fare ciò ho pensato di inserire nella classe che definisce l’albero un campo nodoGenitore, così, facendo la ricerca di un nodo per nome, quando trovo il nodo che mi interessa, vedo chi è il nodo padre e vado a ritroso fino alla radice e trovo il path completo della foglia.
Mi accade però una cosa strana, di sicuro sbaglio qualcosa io, l’init della classe è questo:
def __init__(self,w):
self.nomeNodo = w
self.sottoNodi = []
self.nodoGenitore=None
Quindi aggiungo i nodi all’albero con questa funzione:
#Genera l'albero di parole
def _generaAlbero(word):
root = WNode(word)
listaNodi=_generaListaParole(word,root)
for name in listaNodi:
root.sottoNodi += [_generaAlbero(name.nomeNodo)]
return root
#Genera lista parole lecite
def _generaListaParole(word,level):
ret=[]
nomiNodi=[]
alfabeto='abcdefghijklmnopqrstuvwxyz'
for j in range(0,len(word)+1):
for i in range(0,len(alfabeto)):
generata = word[0:j]+alfabeto[i] + word[j:]
if _BinarySearch(generata)==True:
inLista=generata in nomiNodi
if inLista==False:
nomiNodi.append(generata)
tmpNode = WNode(generata)
tmpNode.nodoGenitore=level
print tmpNode.nodoGenitore.nomeNodo
ret.append(tmpNode)
return ret
word è una stringa e level un nodo. La funzione durante l’esecuzione nel terminale mi stampa il nome del nodo genitore in modo corretto quando faccio:
print tmpNode.nodoGenitore.nomeNodo
Quando perņ vado a fare la ricerca della parola con questa funzione
def path(self,w):
self._path(self,w)
def _path(self,root,w):
for node in root.sottoNodi:
if(node.nomeNodo==w):
print "Trovato "+node.nomeNodo
print node.sottoNodi
print " "+node.nodoGenitore.nomeNodo
break
else:
self._path(node,w)
python mi dice che non puņ fare
print " "+node.nodoGenitore.nomeNodo
in quanto il valore č None, ma in teoria dovrebbe contenere il nodo padre, solo la root dovrebbe essere vuota e il nodo che gli passo non č una root
-------------- parte successiva --------------
Un allegato HTML č stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20131206/5ae87976/attachment.html>
Maggiori informazioni sulla lista
Python