Mercurial > cpython-lru_cache-weakref
diff Objects/classobject.c @ 20601:5c1dfd92877d legacy-trunk
Fix for SF bug #472940: can't getattr() attribute shown by dir()
There really isn't a good reason for instance method objects to have
their own __dict__, __doc__ and __name__ properties that just delegate
the request to the function (callable); the default attribute behavior
already does this.
The test suite had to be fixed because the error changes from
TypeError to AttributeError.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Mon, 22 Oct 2001 02:00:09 +0000 |
| parents | 733cb268ad2f |
| children | b229208a2a72 |
line wrap: on
line diff
--- a/Objects/classobject.c Mon Oct 22 01:47:26 2001 +0000 +++ b/Objects/classobject.c Mon Oct 22 02:00:09 2001 +0000 @@ -2019,33 +2019,6 @@ {NULL} /* Sentinel */ }; -/* __dict__, __doc__ and __name__ are retrieved from im_func */ - -static PyObject * -im_get_dict(PyMethodObject *im) -{ - return PyObject_GetAttrString(im->im_func, "__dict__"); -} - -static PyObject * -im_get_doc(PyMethodObject *im) -{ - return PyObject_GetAttrString(im->im_func, "__doc__"); -} - -static PyObject * -im_get_name(PyMethodObject *im) -{ - return PyObject_GetAttrString(im->im_func, "__name__"); -} - -static PyGetSetDef instancemethod_getsetlist[] = { - {"__dict__", (getter)im_get_dict, NULL, "same as im_func.__dict__"}, - {"__doc__", (getter)im_get_doc, NULL, "same as im_func.__doc__"}, - {"__name__", (getter)im_get_name, NULL, "same as im_func.__name__"}, - {NULL} /* Sentinel */ -}; - /* The getattr() implementation for PyMethod objects is similar to PyObject_GenericGetAttr(), but instead of looking in __dict__ it asks im_self for the attribute. Then the error handling is a bit @@ -2350,7 +2323,7 @@ 0, /* tp_iternext */ 0, /* tp_methods */ instancemethod_memberlist, /* tp_members */ - instancemethod_getsetlist, /* tp_getset */ + 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ instancemethod_descr_get, /* tp_descr_get */
