[Python-3000] Could isinstance/issubclass overriding be dangerous?
Greg Ewing
greg.ewing at canterbury.ac.nz
Mon Apr 30 08:27:23 CEST 2007
Guido van Rossum wrote:
> Unless they were looking at classic classes, why wouldn't they be
> using the specific Py<Type>_Check() macros?
I'm thinking of Pyrex code. One of the goals of Pyrex
is that you should be able to write it without needing
to know about the Python/C API. One of the places that's
not possible at the moment is in binary operator methods,
where you need to write things like
cdef class C:
def __add(x, y):
if PyObject_TypeCheck(x, C):
# we're the left operand
elif PyObject_TypeCheck(y, C):
# we're the right operand
I'd like to be able to provide optimised access to
isinstance() so that you can think in Python instead of
C and write
def __add(x, y):
if isinstance(x, C):
# we're the left operand
elif isinstance(y, C):
# we're the right operand
But it seems like isinstance() is already the wrong thing
to use for this, and there is currently *no* Python-level
function that does what is needed here.
So can we please have another couple of functions that just
do a simple, reliable concrete type test?
--
Greg
More information about the Python-3000
mailing list