[ python-Bugs-1123716 ] descrintro describes __new__ and __init__ behavior wrong

SourceForge.net noreply at sourceforge.net
Wed Feb 23 16:02:48 CET 2005


Bugs item #1123716, was opened at 2005-02-16 01:48
Message generated for change (Comment added) made by mcherm
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1123716&group_id=5470

Category: Documentation
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Steven Bethard (bediviere)
Assigned to: Nobody/Anonymous (nobody)
Summary: descrintro describes __new__ and __init__ behavior wrong

Initial Comment:
The current descrintro.html says:

"__new__ must return an object... If you return an
existing object, the constructor call will still call
its __init__ method. If you return an object of a
different class, its __init__ method will be called..."

This suggests that __new__ will call __init__ of the
object even if the object is a different type.  The
code in typeobject.c disagrees with this:

static PyObject *
type_call(PyTypeObject *type, PyObject *args, PyObject
*kwds)
{
	...
	/* If the returned object is not an instance of type,
	   it won't be initialized. */
	if (!PyType_IsSubtype(obj->ob_type, type))
		return obj;
	...
}

Suggested fix:

"__new__ must return an object... If you return an
existing object, the constructor call will still call
its __init__ method unless the object is an instance of
a different class..."

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

>Comment By: Michael Chermside (mcherm)
Date: 2005-02-23 10:02

Message:
Logged In: YES 
user_id=99874

I agree strongly that the docs need to be clarified.

I spent a while playing around with it and confirmed that
your reading of it appears to be correct, and your proposed
wording is simple and straightforward.

I second the request to make this change.

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

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


More information about the Python-bugs-list mailing list