Check for descriptors (in C)

  • Thread starter Gabriel Genellina
  • Start date
G

Gabriel Genellina

For most types, there are macros like PyXxxx_Check and
PyXxxx_CheckExact. But not for descriptors, and I want to test if a
certain object is a descriptor or not. May I define
PyMethodDescr_Check, by example, along the lines of similar checks, or
the fact that they are not already defined implies that they should
not be tested that way?

My actual use case: I want to check if an object (instance of a class
that inherits from file) still uses the original write method or has
overriden it.
 
A

Alex Martelli

Gabriel Genellina said:
For most types, there are macros like PyXxxx_Check and
PyXxxx_CheckExact. But not for descriptors, and I want to test if a
certain object is a descriptor or not. May I define
PyMethodDescr_Check, by example, along the lines of similar checks, or
the fact that they are not already defined implies that they should
not be tested that way?

"Being a descriptor" == "belonging to a type having a __get__ method",
more or less. There is NO relationship among such types, just a
commonality of methods they make available. Descriptor is a protocol,
common to a family of otherwise unrelated types, not a type. All of the
PyXXX_Check macros are instead based on *types*, not protocols.
My actual use case: I want to check if an object (instance of a class
that inherits from file) still uses the original write method or has
overriden it.

I'd check for identity between type(o).write and file.write -- seems a
more direct expression of that thought (and implementable with the C-API
just as well as with pure Python).


Alex
 
G

Gabriel Genellina

I'd check for identity between type(o).write and file.write -- seems a
more direct expression of that thought (and implementable with the C-API
just as well as with pure Python).

Thanks! It looks obvious now :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,432
Messages
2,571,681
Members
48,796
Latest member
Greg L.

Latest Threads

Top