On Fri, Apr 23, 2021 at 11:22 AM Larry Hastings <[email protected]> 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 -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/FJZAJTGCCKJD4MYC3OGRFCGJGBIP5EVT/ Code of Conduct: http://python.org/psf/codeofconduct/
