1

我的程序调用 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

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

4

2 回答 2

4

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


文档

object.__len__(self)

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

于 2013-03-28T13:30:49.550 回答
1

__len__应该返回一个int> = 0。请参阅文档
这就是错误所说的。

您正在返回一个字符串 ( '[]'),它不是 a int,因此会引发此错误。
返回 0 会更合适。

于 2013-03-28T13:37:40.263 回答