Well, for me having to check both __get__ and __str__ for a data descriptor
feels inelegant.

After read the documentation of collections.abc again "This module provides
abstract base classes that can be used to test whether a class provides a
particular interface; for example, whether it is hashable or whether it is
a mapping." I ask: what is the criteria to decide which interfaces are
worth implemented as an ABC in the standard library?

To my understanding, any well defined python protocol should have a proper
ABC.

El mar., 17 ene. 2017 a las 18:55, Guido van Rossum (<gu...@python.org>)
escribió:

> For this use case I see nothing wrong with hasattr(myobj, '__set__').
>
> On Tue, Jan 17, 2017 at 9:41 AM, Roberto Martínez <
> robertomartin...@gmail.com> wrote:
>
> I need to check if some objects obey the descriptor protocol in the
> construction of a metaclass. I expect to be able to write something like:
>
> if isinstance(myobj, abc.DataDescriptor):
>    # do something
>
> The other idea crossing my mind is something like:
>
> if all(hasattr(myobj, attr) for attr in ('__get__', '__set__')):
>     # do something
>
>
> El mar., 17 ene. 2017 a las 18:07, Guido van Rossum (<gu...@python.org>)
> escribió:
>
> Well, these are an example of the purest duck typing. Just implement
> __get__ and/or __set__ (and __delete__) and you're good.
>
> What's the situation where you miss them?
>
> --Guido
>
> On Tue, Jan 17, 2017 at 8:51 AM, Roberto Martínez <
> robertomartin...@gmail.com> wrote:
>
> Hi,
>
> I miss abstract base classes in collections.abc implementing the
> descriptor protocol. Any reason why they do not exist?
>
> What do you think of adding NonDataDescriptor and DataDescriptor ABCs?
>
> Best regards,
> Roberto
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/guido%40python.org
>
>
>
>
> --
> --Guido van Rossum (python.org/~guido)
>
>
>
>
> --
> --Guido van Rossum (python.org/~guido)
>
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to