[Python-Dev] __doc__ behavior in class definitions

Martin Maly Martin.Maly at microsoft.com
Fri Oct 7 21:15:04 CEST 2005

Hello Python-Dev,
My name is Martin Maly and I am a developer at Microsoft, working on the
IronPython project with Jim Hugunin. I am spending lot of time making
IronPython compatible with Python to the extent possible.

I came across a case which I am not sure if by design or a bug in Python
(Python 2.4.1 (#65, Mar 30 2005, 09:13:57)). Consider following Python

# module begin
"module doc"

class c:
    print __doc__
    __doc__ = "class doc"			(1)
    print __doc__

print c.__doc__
# module end

When ran, it prints:

module doc
class doc
class doc

Based on the binding rules described in the Python documentation, I
would expect the code to throw because binding created on the line (1)
is local to the class block and all the other __doc__ uses should
reference that binding. Apparently, it is not the case.

Is this bug in Python or are __doc__ strings in classes subject to some
additional rules?


More information about the Python-Dev mailing list