On Fri, Apr 23, 2021 at 11:22 AM Larry Hastings <la...@hastings.org> wrote:
>
>
> On 4/20/21 10:03 AM, Mark Shannon wrote:
>
> If you guarded your code with `isinstance(foo, Sequence)` then I could not 
> use it with my `Foo` even if my `Foo` quacked like a sequence. I was forced 
> to use nominal typing; inheriting from Sequence, or explicitly registering as 
> a Sequence.
>
>
> If I'm reading the library correctly, this is correct--but, perhaps, it could 
> be remedied by adding a __subclasshook__ to Sequence that looked for an 
> __iter__ attribute.  That technique might also apply to other ABCs in 
> collections.abc, Mapping for example.  Would that work, or am I missing an 
> critical detail?
>

How would you distinguish between a Sequence and a Mapping? Both have
__iter__ and __len__. Without actually calling those methods, how
would the subclass hook tell them apart?

ChrisA
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/FJZAJTGCCKJD4MYC3OGRFCGJGBIP5EVT/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to