[Python-Dev] Is X a (sequence|mapping)?

M.-A. Lemburg mal@lemburg.com
Tue, 23 Jan 2001 10:15:11 +0100


"Martin v. Loewis" wrote:
> 
> > i don't see an easy way to test if something supports one of these
> > abstract interfaces in Python.
> 
> Why do you want to test for that? If you have an algorithm that only
> operates on integer-indexed things, what can you do if the test fails?
> 
> So it is always better to just use the object in the algorithm, and
> let it break with an exception if somebody passes a bad object.

Right. 

Polymorphic code will usually get you more out of an 
algorithm, than type-safe or interface-safe code.

BTW, there are Python interfaces to PySequence_Check() and
PyMapping_Check() burried in the builtin operator module in case
you really do care ;) ...

	operator.isSequenceType()
	operator.isMappingType()
	+ some other C style _Check() APIs

These only look at the type slots though, so Python instances
will appear to support everything but when used fail with
an exception if they don't provide the proper __xxx__ hooks.

-- 
Marc-Andre Lemburg
______________________________________________________________________
Company:                                        http://www.egenix.com/
Consulting:                                    http://www.lemburg.com/
Python Pages:                           http://www.lemburg.com/python/