mirror of
https://github.com/python/cpython
synced 2026-09-29 12:10:30 +03:00
Enhance issubclass() and PyObject_IsSubclass() so that a tuple is
supported as the second argument. This has the same meaning as for isinstance(), i.e. issubclass(X, (A, B)) is equivalent to issubclass(X, A) or issubclass(X, B). Compared to isinstance(), this patch does not search the tuple recursively for classes, i.e. any entry in the tuple that is not a class, will result in a TypeError. This closes SF patch #649608.
This commit is contained in:
parent
b083cb3901
commit
d9a6ad3beb
7 changed files with 80 additions and 37 deletions
|
|
@ -487,6 +487,13 @@ PyClass_IsSubclass(PyObject *class, PyObject *base)
|
|||
PyClassObject *cp;
|
||||
if (class == base)
|
||||
return 1;
|
||||
if (PyTuple_Check(base)) {
|
||||
n = PyTuple_GET_SIZE(base);
|
||||
for (i = 0; i < n; i++) {
|
||||
if (class == PyTuple_GET_ITEM(base, i))
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
if (class == NULL || !PyClass_Check(class))
|
||||
return 0;
|
||||
cp = (PyClassObject *)class;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue