Re: [Python-Dev] readonly doc (original) (raw)

On Fri, 23 Oct 2009 05:39:53 am Brett Cannon wrote:

Is doc not normal due to its general underscorishness, or is it not normal because it isn't?

I honestly don't follow that sentence. But doc is special because of its use; documenting how to use of an object. In this case when you call something like help() on an instance of an object it skips the instance's value for doc and goes straight to the defining class and stops there as you don't care how a subclass says to use itself as that is not what you are working with.

Classes don't normally inherit behaviour from their subclasses. Presumably you meant superclass.

I expected doc to be just like the other double-underscore objects: lookup skips the instance and goes to the class, then follows the normal rules of inheritance. Consequently I've just discovered that a few of my classes, which I assumed inherited doc, don't actually have a docstring. This has consequences beyond help(obj) not working as expected: doctests which I thought were running aren't.

Magic behaviour like this is nasty because it breaks the Rule of Least Astonishment. I thought I understood Python's object model and it's rules of inheritance, but not only do double-underscore attributes follow a different rule for inheritance than other attributes, but doc follows a different rule than other double-underscore attributes.

-- Steven D'Aprano


Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com