上述代码会报错TypeError: unsupported operand type(s) for *: 'Link' and 'Link'
时间: 2023-09-22 10:08:09 浏览: 100
这个错误是因为在 `__repr__` 方法中,如果 `rest` 不是空链表,我们在拼接字符串时没有考虑到 `rest` 也是一个链表,导致了错误。
为了解决这个问题,我们需要在拼接字符串时,对 `rest` 调用 `__repr__` 方法,而不是直接将其转换成字符串。
下面是修改后的 `__repr__` 方法的代码:
```python
class Link:
empty = ()
def __init__(self, first, rest=empty):
assert rest is Link.empty or isinstance(rest, Link)
self.first = first
self.rest = rest
def __repr__(self):
if self.rest is not Link.empty:
rest_repr = ', ' + self.rest.__repr__()
else:
rest_repr = ''
return 'Link(' + repr(self.first) + rest_repr + ')'
def __str__(self):
string = '<'
while self.rest is not Link.empty:
string += str(self.first) + ' '
self = self.rest
return string + str(self.first) + '>'
```
现在再运行 `deep_map` 函数,就不会报错了。
阅读全文
相关推荐

















