Stampare albero parole python

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
ermescurt
Linux 0.x
Linux 0.x
Messaggi: 1
Iscritto il: sab nov 22, 2014 11:49

Stampare albero parole python

Messaggioda ermescurt » sab nov 22, 2014 11:50

Salve ragazzi ho creato un albero di parole inizialmente vuoto in questo modo:

class WNode(object):
def __init__(self, w):
self._w = w
self._children = []
self._level = 0

def add_children(self, w):
self._children.append(w)

Sapete dirmi come posso stampare questo albero e non far apparire la scritta <__main__.WNode at 0x57992f0>
Grazie

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar mar 14, 2006 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Stampare albero parole python

Messaggioda d4z_c0nf » dom nov 23, 2014 12:11

Mmm, tu stampi l'istanza WNode che hai creato. In realtà tu vuoi stampare il suo "attributo" _children.
Quindi dovresti fare

Codice: Seleziona tutto

foo = WNode('something')
foo.add_children('word')
print(foo._children)

O se vuoi fare un meteodo di WNode che stampi il suo "_children" o ancora ridefinire __str__ per WNode

Codice: Seleziona tutto

def __str__(self):
    return "%s" % self._children

o

Codice: Seleziona tutto

def __str__(self):
    return self._children.__str__()

così quando usi

Codice: Seleziona tutto

 print(foo)

otterrai la stampa di foo._children

Avatar utente
lablinux
Linux 4.x
Linux 4.x
Messaggi: 1095
Iscritto il: gio nov 27, 2008 12:23
Desktop: Gnome
Distribuzione: Debian testing
Località: Rho

Re: Stampare albero parole python

Messaggioda lablinux » lun nov 24, 2014 12:50

Posso permettermi un appunto/domanda?
perché nei parametri dell'initi metti la variabile w che non usi (o cosi sembra)?