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__()メソッドが 0 を返すオブジェクトは、ブール値のコンテキストでは false と見なされます。

于 2013-03-28T13:30:49.550 に答える
1

__len__int>= 0を返す必要があります。ドキュメント
を参照してください 。それがエラーの内容です。

'[]'ではない string( )を返しているintため、このエラーが発生します。
0 を返す方が適切です。

于 2013-03-28T13:37:40.263 に答える