New submission from Erik Bray: This issue is directly related to http://bugs.python.org/issue5890, the solution to which I think was incomplete.
The examples below use a trivial subclass of property (but apply as well to a less trivial one): >>> class myproperty(property): pass ... When using myproperty with the decorator syntax, or simply without specifying a doc= argument, the docstring is properly inherited from the getter, as was fixed by issue5890: >>> class A: ... @myproperty ... def foo(self): ... """The foo.""" ... return 1 ... >>> A.foo.__doc__ 'The foo.' However, when using the doc= argument, this behavior is broken: >>> class B: ... def _get_foo(self): return 1 ... foo = myproperty(_get_foo, doc="The foo.") ... >>> B.foo.__doc__ >>> B.foo.__doc__ is None True The attached patch resolves the issue by applying the special case for subclasses more generally. If this looks good I'll add a test as well. One thing I went back and forth on in the "if (Py_TYPE(self) != &PyProperty_Type)" block was whether or not to then deref prop->prop_doc and set it to NULL, since I don't think it's needed anymore at this point. But I decided it was ultimately harmless to leave it. ---------- components: Interpreter Core files: property-doc.patch keywords: patch messages: 247756 nosy: erik.bray priority: normal severity: normal status: open title: Subclass of property doesn't preserve instance __doc__ when using doc= argument Added file: http://bugs.python.org/file40086/property-doc.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue24766> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com