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/