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:
# 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?