Kaydet (Commit) f5dd9141 authored tarafından Guido van Rossum's avatar Guido van Rossum

Support type objects in isinstance().

E.g. isinstance('',types.StringType) will return true now instead of
raising a TypeError exception.  This is for JPython compatibility.
üst 6cedf82a
...@@ -1627,6 +1627,10 @@ builtin_isinstance(self, args) ...@@ -1627,6 +1627,10 @@ builtin_isinstance(self, args)
if (!PyArg_ParseTuple(args, "OO", &inst, &cls)) if (!PyArg_ParseTuple(args, "OO", &inst, &cls))
return NULL; return NULL;
if (PyType_Check(cls)) {
retval = (inst->ob_type == cls);
}
else {
if (!PyClass_Check(cls)) { if (!PyClass_Check(cls)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"second argument must be a class"); "second argument must be a class");
...@@ -1640,6 +1644,7 @@ builtin_isinstance(self, args) ...@@ -1640,6 +1644,7 @@ builtin_isinstance(self, args)
(PyObject*)((PyInstanceObject*)inst)->in_class; (PyObject*)((PyInstanceObject*)inst)->in_class;
retval = PyClass_IsSubclass(inclass, cls); retval = PyClass_IsSubclass(inclass, cls);
} }
}
return PyInt_FromLong(retval); return PyInt_FromLong(retval);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment