mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
Patch #1520294: Support for getset and member descriptors in types.py,
inspect.py, and pydoc.py. Specifically, this allows for querying the type of an object against these built-in C types and more importantly, for getting their docstrings printed in the interactive interpreter's help() function. This patch includes a new built-in module called _types which provides definitions of getset and member descriptors for use by the types.py module. These types are exposed as types.GetSetDescriptorType and types.MemberDescriptorType. Query functions are provided as inspect.isgetsetdescriptor() and inspect.ismemberdescriptor(). The implementations of these are robust enough to work with Python implementations other than CPython, which may not have these fundamental types. The patch also includes documentation and test suite updates. I commit these changes now under these guiding principles: 1. Silence is assent. The release manager has not said "no", and of the few people that cared enough to respond to the thread, the worst vote was "0". 2. It's easier to ask for forgiveness than permission. 3. It's so dang easy to revert stuff in svn, that you could view this as a forcing function. :) Windows build patches will follow.
This commit is contained in:
parent
fc0e61d9b6
commit
00decd7835
10 changed files with 236 additions and 10 deletions
|
@ -180,13 +180,32 @@ Note:
|
|||
Return true if the object is a data descriptor.
|
||||
|
||||
Data descriptors have both a __get__ and a __set__ attribute. Examples are
|
||||
properties (defined in Python) and getsets and members (defined in C).
|
||||
Typically, data descriptors will also have __name__ and __doc__ attributes
|
||||
(properties, getsets, and members have both of these attributes), but this
|
||||
is not guaranteed.
|
||||
properties (defined in Python), getsets, and members. The latter two are
|
||||
defined in C and there are more specific tests available for those types,
|
||||
which is robust across Python implementations. Typically, data descriptors
|
||||
will also have __name__ and __doc__ attributes (properties, getsets, and
|
||||
members have both of these attributes), but this is not guaranteed.
|
||||
\versionadded{2.3}
|
||||
\end{funcdesc}
|
||||
|
||||
\begin{funcdesc}{isgetsetdescriptor}{object}
|
||||
Return true if the object is a getset descriptor.
|
||||
|
||||
getsets are attributes defined in extension modules via \code{PyGetSetDef}
|
||||
structures. For Python implementations without such types, this method will
|
||||
always return \code{False}.
|
||||
\versionadded{2.5}
|
||||
\end{funcdesc}
|
||||
|
||||
\begin{funcdesc}{ismemberdescriptor}{object}
|
||||
Return true if the object is a member descriptor.
|
||||
|
||||
Member descriptors are attributes defined in extension modules via
|
||||
\code{PyMemberDef} structures. For Python implementations without such
|
||||
types, this method will always return \code{False}.
|
||||
\versionadded{2.5}
|
||||
\end{funcdesc}
|
||||
|
||||
\subsection{Retrieving source code
|
||||
\label{inspect-source}}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue