Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 863907
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T09:23:15+00:00 2026-05-15T09:23:15+00:00

I can check for a next() method, but is that enough? Is there an

  • 0

I can check for a next() method, but is that enough? Is there an idiomatic way?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T09:23:16+00:00Added an answer on May 15, 2026 at 9:23 am

    In Python 2.6 or better, the designed-in idiom for such behavioral checks is a “membership check” with the abstract base class in the collections module of the standard library:

    >>> import collections
    >>> isinstance('ciao', collections.Iterable)
    True
    >>> isinstance(23, collections.Iterable)
    False
    >>> isinstance(xrange(23), collections.Iterable)
    True
    

    Indeed, this kind of checks is the prime design reason for the new abstract base classes (a second important one is to provide “mixin functionality” in some cases, which is why they’re ABCs rather than just interfaces — but that doesn’t apply to collections.Iterable, it exists strictly to allow such checks with isinstance or issubclass). ABCs allow classes that don’t actually inherit from them to be “registered” as subclasses anyway, so that such classes can be “subclasses” of the ABC for such checks; and, they can internally perform all needed checks for special methods (__iter__ in this case), so you don’t have to.

    If you’re stuck with older releases of Python, “it’s better to ask forgiveness than permission”:

    def isiterable(x):
      try: iter(x)
      except TypeError: return False
      else: return True
    

    but that’s not as fast and concise as the new approach.

    Note that for this special case you’ll often want to special-case strings (which are iterable but most application contexts want to treat as “scalars” anyway). Whatever approach you’re using to check iterableness, if you need such special casing just prepend a check for isinstance(x, basestring) — for example:

    def reallyiterable(x):
      return not isinstance(x, basestring) and isinstance(x, collections.Iterable)
    

    Edit: as pointed out in a comment, the question focuses on whether an object is an iter***ator*** rather than whether it’s iter***able*** (all iterators are iterable, but not vice versa — not all iterables are iterators). isinstance(x, collections.Iterator) is the perfectly analogous way to check for that condition specifically.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Is there a built-in function/method that can check if a given string is a
Is there any way where I can check if the field is numeric in
I want something that can check if a string is SELECT , INSERT ,
Visual Studio Test can check for expected exceptions using the ExpectedException attribute. You can
Does anyone know how I can check to see if a directory is writeable
Objective : Make a progress bar where users can check how much of a
In Windows Server 2003, how I can check if my program is running in
Suppose I have a filehandle $fh . I can check its existence with -e
Under normal circumstances, a VB.NET application of mine can check the ClientName environmental variable
How can I check file permissions , without having to run operating system specific

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.