[Python-bugs-list] [ python-Bugs-576990 ] inheriting from property and docstrings

noreply@sourceforge.net noreply@sourceforge.net
Mon, 08 Jul 2002 05:23:58 -0700


Bugs item #576990, was opened at 2002-07-03 14:42
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=576990&group_id=5470

Category: Python Interpreter Core
Group: Python 2.2.1
Status: Open
Resolution: None
Priority: 5
Submitted By: Roeland Rengelink (rengelink)
Assigned to: Nobody/Anonymous (nobody)
Summary: inheriting from property and docstrings

Initial Comment:
If I inherit from property, and try to initialize a derived   
property object, the doc string doesn't get set. This bug   
was introduced in 2.2.1, and is present in 2.3a0:   
   
Compare:   
   
Python 2.2 (#1, Mar 26 2002, 15:46:04)   
[GCC 2.95.3 20010315 (SuSE)] on linux2   
Type "help", "copyright", "credits" or "license" for more   
information.   
>>> class myprop(property):pass   
...   
>>> a = myprop(None, None, None, 'hi')   
>>> print a.__doc__   
hi   
   
and,   
   
Python 2.2.1 (#1, Jun 16 2002, 16:19:48)   
[GCC 2.95.3 20010315 (SuSE)] on linux2   
Type "help", "copyright", "credits" or "license" for more   
information.   
>>> class myprop(property):pass   
...   
>>> a = myprop(None, None, None, 'hi')   
>>> print a.__doc__   
None   
   
There is no problem with the getter/setter functions  
passed to the constructor.  i.e.: myprop(f,g,h,None) works   
identical in 2.2 and 2.2.1   
 
Good luck, 
 
Roeland Rengelink   
   
   

----------------------------------------------------------------------

>Comment By: Roeland Rengelink (rengelink)
Date: 2002-07-08 12:23

Message:
Logged In: YES 
user_id=302601

Some more details:

In fact 2.2.1 is consistently wrong, whereas 2.2 is
inconsistently right ;), compare:

Python 2.2.1 (#20, Jul  8 2002, 13:25:14)
[GCC 3.1] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>> class myprop(property):pass
...
>>> class yourprop(property):
...     "A doc string"
...
>>> print myprop(None, None, None, 'Hi there').__doc__
None                 
>>> print yourprop(None, None, None, 'Hi there').__doc__
A doc string

and

Python 2.2 (#4, Jan  7 2002, 11:59:25)
[GCC 2.95.2 19991024 (release)] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>> class myprop(property):pass
...
>>> class yourprop(property):
...     "A doc string"
...
>>> print myprop(None, None, None, 'Hi there').__doc__
Hi there
>>> print yourprop(None, None, None, 'Hi there').__doc__
A doc string

So, in 2.2.1 myprop(...).__doc__ will allways return
myprop.__doc__. In 2.2 myprop.__doc__ will return the
instance's
__doc__, iff myprop.__doc__ is None.

For the record: I was expecting 'Hi there' (i.e.
obj->prop_doc), as in:

>>> property(None, None, None, 'Hi there').__doc__
'Hi there'

Hope this helps,

Roeland

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=576990&group_id=5470