双向链表的长度实现,python

时间:2013-03-28 13:29:39

标签: python

我的程序调用len(list),我对len的定义如下。

 def __len__(self):
    if not self.head:
        return '[]'
    else:
        return self.size

这是我得到的错误

 assert len(testList) == 0, "List should be empty, but length is %r" % len(testList)
 TypeError: __len__() should return an int

所以基本上我必须在列表为空时返回'[]',否则我需要返回它的长度。我将如何做到这一点。

2 个答案:

答案 0 :(得分:4)

__len__ 的返回值必须int。所以当列表为空时返回0。


来自docs

object.__len__(self)
  

调用实现内置函数len()。 应该返回对象的长度,整数> = 0. 另外,一个没有的对象   定义__nonzero__()方法,其__len__()方法返回零   在布尔上下文中被认为是假的。

答案 1 :(得分:1)

__len__应返回int> = 0.请参阅docs
这就是错误所说的。

您返回的字符串('[]')不是int,因此会出现此错误。
返回0将更合适。