[Python-ideas] Allow isinstance second argument to be a set of types
Alexander Belopolsky
alexander.belopolsky at gmail.com
Thu Jul 7 02:02:22 CEST 2011
On Wed, Jul 6, 2011 at 7:35 PM, Benjamin Peterson <benjamin at python.org> wrote:
..
> Mm. I don't blame you. I'll speak code:
>
> class Evil(type):
> def __iter__(self):
> return range(42)
>
>
> class Accomplice(metaclass=Evil):
> pass
>
> isinstance(12, Accomplice()) # boom if arbitrary iterables are allowed
What is "boom"? If "boom" is a TypeError - it is to be expected. For
example, with
def better_isinstance(object, classinfo):
if isinstance(classinfo, (type, tuple)):
return isinstance(object, classinfo)
else:
return any(isinstance(object, cls) for cls in classinfo)
I get:
>>> better_isinstance(12, Accomplice)
False
and
>>> better_isinstance(12, Accomplice())
Traceback (most recent call last):
..
TypeError: 'Accomplice' object is not iterable
More information about the Python-ideas
mailing list