[Python-Dev] PySequence_Check but no __len__

Ivan Pozdeev vano at mail.mipt.ru
Fri Jun 22 15:17:19 EDT 2018


On 22.06.2018 22:07, Terry Reedy wrote:
> On 6/22/2018 7:17 AM, Christian Tismer wrote:
>
>>
>> My problem is to find out how to deal with a class which has
>> __getitem__ but no __len__.
>>
>> The documentation suggests that the length of a sequence can always
>> be obtained by len().
>> https://docs.python.org/3/reference/datamodel.html
>
> It says that plainly: "The built-in function len() returns the number 
> of items of a sequence. "
>
> https://docs.python.org/3/library/collections.abc.html#collections-abstract-base-classes 
>
>
> says that a Sequence has both __getitem__ and __len__.
>
> I am surprised that a C-API function calls something a 'sequence' 
> without it having __len__.
>
A practical sequence check is checking for __iter__ . An iterator 
doesn't necessarily have a defined length -- e.g. a stream or a generator.

-- 
Regards,
Ivan



More information about the Python-Dev mailing list