Olg*_*lga 7 python string representation
我有字符串表示问题.我正在尝试打印我的对象,有时我会在输出中得到单引号.请帮助我理解它为什么会发生,如何打印出没有引号的对象.
这是我的代码:
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)
Run Code Online (Sandbox Code Playgroud)
这是我做的:
from Tree import Tree
t = Tree('X', Tree('Y','y'), Tree('Z', 'z'))
print t
Run Code Online (Sandbox Code Playgroud)
这是我得到的:
(X (Y 'y') (Z 'z'))
Run Code Online (Sandbox Code Playgroud)
这是我想要的:
(X (Y y) (Z z))
Run Code Online (Sandbox Code Playgroud)
为什么引号出现在终端节点的值周围,而不是在非终端的值周围?
mgi*_*son 14
repr在字符串上给出引号而str不是.例如:
>>> s = 'foo'
>>> print str(s)
foo
>>> print repr(s)
'foo'
Run Code Online (Sandbox Code Playgroud)
尝试:
def __repr__(self):
if len(self.children) == 0:
return '%s' %self.value
else:
childrenStr = ' '.join(map(str, self.children)) #str, not repr!
return '(%s %s)' % (self.value, childrenStr)
Run Code Online (Sandbox Code Playgroud)
代替.
| 归档时间: |
|
| 查看次数: |
10578 次 |
| 最近记录: |