情况:
我是Python新手,目前正在尝试学习诀窍,我尝试创建一个链表类来帮助更好地理解该语言及其结构。我知道__repr__
函数基本上应该返回相同的东西__str__
但我不确定实际的区别是什么。
到目前为止,这是我的课程:
class LinkedList:
class Node:
def __init__(self, val, prior=None, next=None):
self.val = val
self.prior = prior
self.next = next
def __init__(self):
self.head = LinkedList.Node(None)
self.head.prior = self.head.next = self.head
self.length = 0
def __str__(self):
"""Implements `str(self)`. Returns '[]' if the list is empty, else
returns `str(x)` for all values `x` in this list, separated by commas
and enclosed by square brackets. E.g., for a list containing values
1, 2 and 3, returns '[1, 2, 3]'."""
if len(self)==0:
return '[]'
else:
return '[' + ', '.join(str(x) for x in self) + ']'
def __repr__(self):
"""Supports REPL inspection. (Same behavior as `str`.)"""
return '[' + ', '.join(str(x) for x in self) + ']'
当我针对下面的代码测试此代码时,我会收到一个错误,基本上表明使用 repr 函数时实际上并未返回空白字符串“[]”。我如何编辑此方法主体来解决此问题?我也尝试过return str(self)
我也不知道为什么这不起作用。
from unittest import TestCase
tc = TestCase()
lst = LinkedList()
tc.assertEqual('[]', str(lst))
tc.assertEqual('[]', repr(lst))
lst.append(1)
tc.assertEqual('[1]', str(lst))
tc.assertEqual('[1]', repr(lst))