Do for hasattr() what was done for getattr()

Namely, an exception is raised if the second arg to hasattr() is not a
string or Unicode.
This commit is contained in:
Jeremy Hylton 2001-07-30 22:45:19 +00:00
parent c974bf4dc2
commit 302b54acd9
1 changed files with 11 additions and 0 deletions

View File

@ -944,6 +944,17 @@ builtin_hasattr(PyObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "OO:hasattr", &v, &name))
return NULL;
if (PyUnicode_Check(name)) {
name = _PyUnicode_AsDefaultEncodedString(name, NULL);
if (name == NULL)
return NULL;
}
if (!PyString_Check(name)) {
PyErr_SetString(PyExc_TypeError,
"attribute name must be string");
return NULL;
}
v = PyObject_GetAttr(v, name);
if (v == NULL) {
PyErr_Clear();