diff options
author | Walter Dörwald <walter@livinglogic.de> | 2002-12-12 16:41:44 (GMT) |
---|---|---|
committer | Walter Dörwald <walter@livinglogic.de> | 2002-12-12 16:41:44 (GMT) |
commit | d9a6ad3bebc2b451482db152171fca3144b2cd97 (patch) | |
tree | 59624bf7be4191d6d918fd91a821636a4157aa6a /Objects/classobject.c | |
parent | b083cb3901fcb7487c04ad996148d1cf0aa32350 (diff) | |
download | cpython-d9a6ad3bebc2b451482db152171fca3144b2cd97.zip cpython-d9a6ad3bebc2b451482db152171fca3144b2cd97.tar.gz cpython-d9a6ad3bebc2b451482db152171fca3144b2cd97.tar.bz2 |
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.
Diffstat (limited to 'Objects/classobject.c')
-rw-r--r-- | Objects/classobject.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Objects/classobject.c b/Objects/classobject.c index f7b442a..f3b9873 100644 --- a/Objects/classobject.c +++ b/Objects/classobject.c @@ -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; |