Describe the new semantics for setting and deleting a function's

__dict__ attribute.  Deleting it, or setting it to a non-dictionary
result in a TypeError.  Note that getting it the first time magically
initializes it to an empty dict so that func.__dict__ will always
appear to be a dictionary (never None).

Closes SF bug #446645.
This commit is contained in:
Barry Warsaw 2001-08-14 18:22:24 +00:00
parent 680cabb225
commit 5ef99a0bc5
1 changed files with 5 additions and 10 deletions

View File

@ -1047,19 +1047,14 @@ Function objects also support getting and setting arbitrary
attributes, which can be used to, e.g. attach metadata to functions. attributes, which can be used to, e.g. attach metadata to functions.
Regular attribute dot-notation is used to get and set such Regular attribute dot-notation is used to get and set such
attributes. \emph{Note that the current implementation only supports attributes. \emph{Note that the current implementation only supports
function attributes on functions written in Python. Function function attributes on user-defined functions. Function attributes on
attributes on built-ins may be supported in the future.} built-in functions may be supported in the future.}
Functions have another special attribute \code{\var{f}.__dict__} Functions have another special attribute \code{\var{f}.__dict__}
(a.k.a. \code{\var{f}.func_dict}) which contains the namespace used to (a.k.a. \code{\var{f}.func_dict}) which contains the namespace used to
support function attributes. \code{__dict__} can be accessed support function attributes. \code{__dict__} and \code{func_dict} can
directly, set to a dictionary object, or \code{None}. It can also be be accessed directly or set to a dictionary object. A function's
deleted (but the following two lines are equivalent): dictionary cannot be deleted.
\begin{verbatim}
del func.__dict__
func.__dict__ = None
\end{verbatim}
\subsubsection{Methods \label{typesmethods}} \subsubsection{Methods \label{typesmethods}}
\obindex{method} \obindex{method}