summaryrefslogtreecommitdiffstats
path: root/Objects/descrobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/descrobject.c')
-rw-r--r--Objects/descrobject.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/Objects/descrobject.c b/Objects/descrobject.c
index b96ad6e..9494062 100644
--- a/Objects/descrobject.c
+++ b/Objects/descrobject.c
@@ -1081,6 +1081,8 @@ PyWrapper_New(PyObject *d, PyObject *self)
class property(object):
def __init__(self, fget=None, fset=None, fdel=None, doc=None):
+ if doc is None and fget is not None and hasattr(fget, "__doc__"):
+ doc = fget.__doc__
self.__get = fget
self.__set = fset
self.__del = fdel
@@ -1182,6 +1184,7 @@ static int
property_init(PyObject *self, PyObject *args, PyObject *kwds)
{
PyObject *get = NULL, *set = NULL, *del = NULL, *doc = NULL;
+ PyObject *get_doc = NULL;
static char *kwlist[] = {"fget", "fset", "fdel", "doc", 0};
propertyobject *gs = (propertyobject *)self;
@@ -1196,6 +1199,15 @@ property_init(PyObject *self, PyObject *args, PyObject *kwds)
if (del == Py_None)
del = NULL;
+ /* if no docstring given and the getter has one, use that one */
+ if ((doc == NULL || doc == Py_None) && get != NULL &&
+ PyObject_HasAttrString(get, "__doc__")) {
+ if (!(get_doc = PyObject_GetAttrString(get, "__doc__")))
+ return -1;
+ Py_DECREF(get_doc); /* it is INCREF'd again below */
+ doc = get_doc;
+ }
+
Py_XINCREF(get);
Py_XINCREF(set);
Py_XINCREF(del);