From 4f9b13bac8335d4614499673a3349b2c97401f12 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Mon, 26 Feb 2001 18:09:15 +0000 Subject: [PATCH] instancemethod_setattro(): Raise TypeError if an attempt is made to set a function attribute on a method (either bound or unbound). This reverts to Python 2.0 behavior that no attributes of the method are writable, but provides a more informative error message. --- Objects/classobject.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/Objects/classobject.c b/Objects/classobject.c index bb17df174a0..9cca19f832a 100644 --- a/Objects/classobject.c +++ b/Objects/classobject.c @@ -1866,21 +1866,8 @@ instancemethod_setattro(register PyMethodObject *im, PyObject *name, { char *sname = PyString_AsString(name); - if (PyEval_GetRestricted() || - strcmp(sname, "im_func") == 0 || - strcmp(sname, "im_self") == 0 || - strcmp(sname, "im_class") == 0) - { - PyErr_Format(PyExc_TypeError, "read-only attribute: %s", - sname); - return -1; - } - if (im->im_self != NULL) { - PyErr_Format(PyExc_TypeError, - "cannot set attributes through bound methods"); - return -1; - } - return PyObject_SetAttr(im->im_func, name, v); + PyErr_Format(PyExc_TypeError, "read-only attribute: %s", sname); + return -1; }