擅长:python、mysql、java
<p>是的,您可以通过将<a href="https://docs.python.org/3/reference/datamodel.html#object.__repr__" rel="nofollow noreferrer">^{<cd1>}</a>方法添加到<code>Token</code>对象上来实现这一点:</p>
<pre><code>def __repr__(self):
return str(self) # redirect for __repr__ > __str__
</code></pre>
<p>现在您甚至不需要在<code>stringify</code>方法中调用<code>str(item)</code>,并且可以将其更改为仅返回对象本身:</p>
<pre><code>def stringify(self, item=None):
if isinstance(item, list):
return [self.stringify(subitem) for subitem in item]
if isinstance(item, Token):
return item # do not need str(item) anymore
</code></pre>
<p>运行它,您现在将获得:</p>
<pre><code># [<PLUS: '+'>, <NUMBER: '2.0'>, [<TIMES: '*'>, <NUMBER: '3.0'>, <NUMBER: '4.0'>]] [<USER_DEFINED: 'factorial'>, <NUMBER: '5.0'>]
</code></pre>