Ho un problema con le rappresentazioni di stringa. Sto cercando di stampare il mio oggetto e talvolta ottengo virgolette singole nell'output. Per favore aiutami a capire perché succede e come posso stampare l'oggetto senza virgolette.Perché alcune stringhe Python sono stampate con virgolette e alcune sono stampate senza virgolette?
Ecco il mio codice:
class Tree:
def __init__(self, value, *children):
self.value = value
self.children = list(children)
self.marker = ""
def __repr__(self):
if len(self.children) == 0:
return '%s' %self.value
else:
childrenStr = ' '.join(map(repr, self.children))
return '(%s %s)' % (self.value, childrenStr)
Ecco quello che faccio:
from Tree import Tree
t = Tree('X', Tree('Y','y'), Tree('Z', 'z'))
print t
Ecco cosa ottengo:
(X (Y 'y') (Z 'z'))
Ecco quello che voglio ottenere:
(X (Y y) (Z z))
Perché le virgolette appaiono attorno ai valori dei nodi terminali, ma non attorno ai valori dei non-terminali?
OK, ho trovato la spiegazione perché repr (x) produce stringhe tra virgolette [qui] (http://stackoverflow.com/questions/7784148/understanding-repr-function-in-python) – Olga