En Sun, 17 Jan 2010 23:23:45 -0300, Steve Holden <st...@holdenweb.com> escribió:
Gabriel Genellina wrote:

Methods don't have docstrings; functions do. So one has to "clone" the
function to set a new docstring.

On behalf of all methods I would like to say "We demand the right to
docstrings".

print abs.__doc__
abs(number) -> number

Return the absolute value of the argument.


Perhaps I am misunderstanding "don't have docstrings". This code:

Sorry, I wasn't clear at all. What I wanted to say is that docstrings are actually stored as *function* attributes; methods inherit the docstring from the function they are built on (as a read-only attribute).


py> class Base(object):
...   def method(self):
...     "my docstring"
...
py> Base.method.__doc__
'my docstring'
py> Base.method.__doc__ = "another docstring"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: attribute '__doc__' of 'instancemethod' objects is not writable
py> Base.method.im_func.__doc__
'my docstring'
py> Base.method.im_func.__doc__ = "another docstring"
py> Base.method.__doc__
'another docstring'


So, if you want Base.foo and Derived.foo to share the same behavior but have separate docstrings (what Steven asked for), you have to create separate functions for both. That's what my already posted code does.

So, are the demands of the methods reasonable, or do they already have
what they are so loudly demanding?

Well, they could demand the right to have a docstring of their own. Since 3.x eliminated a whole category of methods (unbound methods are gone), their ability to press for demands was greatly reduced. I don't think they could get such right granted in the near future...

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to