sufficiently pythonic code for testing type of function

Ben Finney bignose+hates-spam at
Wed Oct 11 07:44:05 CEST 2006

"Theerasak Photha" <hanumizzle at> writes:

> I wrote this for someone else to take an object and list of types,
> then check if obj is one of those types, raising an error otherwise.
> Is it enough to rely on side effects or absence thereof, or should I
> put return True in here somewhere?
> def test_obj_type(obj, types):
>   for type in types:
>     if isinstance(obj, type):
>       break
>     else:
>       raise ValueError, 'object is not in %s' % types

Why have you re-implemented (a less-functional version of) 'isinstance'?

    >>> help(isinstance)
    Help on built-in function isinstance in module __builtin__:

        isinstance(object, class-or-type-or-tuple) -> bool

        Return whether an object is an instance of a class or of a subclass thereof.
        With a type as second argument, return whether that is the object's type.
        The form using a tuple, isinstance(x, (A, B, ...)), is a shortcut for
        isinstance(x, A) or isinstance(x, B) or ... (etc.).

    >>> isinstance(3, (int, float))

 \       "Yesterday I told a chicken to cross the road. It said, 'What |
  `\                                          for?'"  -- Steven Wright |
_o__)                                                                  |
Ben Finney

More information about the Python-list mailing list