# try setting __dict__
try:
F.a.__dict__ = (1, 2, 3)
-except TypeError: pass
-else: raise TestFailed, 'expected TypeError'
+except (AttributeError, TypeError): pass
+else: raise TestFailed, 'expected TypeError or AttributeError'
F.a.im_func.__dict__ = {'one': 11, 'two': 22, 'three': 33}
try:
F.a.__dict__ = d
-except TypeError: pass
+except (AttributeError, TypeError): pass
else: raise TestFailed
if f2.a.one <> f1.a.one <> F.a.one <> 11:
verify(hasattr(obj, name)) # Otherwise it's probably a typo
try:
setattr(obj, name, value)
- except TypeError:
+ except (AttributeError, TypeError):
pass
else:
raise TestFailed, "shouldn't be able to set %s to %r" % (name, value)
try:
delattr(obj, name)
- except TypeError:
+ except (AttributeError, TypeError):
pass
else:
raise TestFailed, "shouldn't be able to del %s" % name
{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
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 */