[Python-Dev] collections.abc for data and non-data descriptors

Guido van Rossum guido at python.org
Tue Jan 17 12:55:31 EST 2017


For this use case I see nothing wrong with hasattr(myobj, '__set__').

On Tue, Jan 17, 2017 at 9:41 AM, Roberto Martínez <
robertomartinezp at 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 (<guido at 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 <
>> robertomartinezp at 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 at 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)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20170117/acc74cd1/attachment.html>


More information about the Python-Dev mailing list