New submission from Ram Rachum:

The builtin `property` lets you specify a `doc` argument for your properties, 
which is great because then it shows up in `help`. So I figured that when I'm 
writing my own descriptor, I could set `__doc__` on it and have `help` use it. 
Not so, `help` ignores it. 

See this example:

    class Property(object):
        "Emulate PyProperty_Type() in Objects/descrobject.c"
    
        def __init__(self, fget=None, fset=None, fdel=None, doc=None):
            self.fget = fget
            self.fset = fset
            self.fdel = fdel
            if doc is None and fget is not None:
                doc = fget.__doc__
            self.__doc__ = doc
    
        def __get__(self, obj, objtype=None):
            if obj is None:
                return self
            if self.fget is None:
                raise AttributeError("unreadable attribute")
            return self.fget(obj)
    
        def __set__(self, obj, value):
            if self.fset is None:
                raise AttributeError("can't set attribute")
            self.fset(obj, value)
    
        def __delete__(self, obj):
            if self.fdel is None:
                raise AttributeError("can't delete attribute")
            self.fdel(obj)
    
        def getter(self, fget):
            return type(self)(fget, self.fset, self.fdel, self.__doc__)
    
        def setter(self, fset):
            return type(self)(self.fget, fset, self.fdel, self.__doc__)
    
        def deleter(self, fdel):
            return type(self)(self.fget, self.fset, fdel, self.__doc__)
    
    
    class A:
        x = property(lambda self: 3,
                     doc='Helpful text')
        
        y = Property(lambda self: 7,
                     doc='More Helpful text')
        
    
    help(A.x) # Shows 'Helpful text'
    help(A.y) # Does not show 'More Helpful text'
    

It seems that `property` is special-cased or something. I want to be able to 
set a docstring on my own descriptors.

----------
components: Library (Lib)
messages: 229572
nosy: cool-RR
priority: normal
severity: normal
status: open
title: `help` ignores `__doc__` of descriptors
versions: Python 3.4

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue22656>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to