Page 1 of 1

Warum ruft „list()“ „__len__()“ auf?

Posted: 16 Jan 2025, 04:29
by Guest
Der Setup-Code:

Code: Select all

class MyContainer:
def __init__( self ):
self.stuff = [ 1, 2, 3 ]

def __iter__( self ):
print( "__iter__" )
return iter( self.stuff )

def __len__( self ):
print( "__len__" )
return len( self.stuff )

mc = MyContainer()
Jetzt in meiner Shell:

Code: Select all

>>> i = iter( mc )
__iter__
>>> [ x for x in i ]
[1, 2, 3]
>>> list( mc )
__iter__
__len__
[1, 2, 3]
Warum wird __len__() von list() aufgerufen? Und wo ist das dokumentiert?