何时在Python中选择collections.Iterable或’__iter__’属性?

When to choose collections.Iterable or '__iter__' attribute in Python?

本问题已经有最佳答案,请猛点这里访问。

在这个问题中,有许多方法可以测试不可测性。其中两种解决方案是:

  • hasattr(object, '__iter__')
  • isinstance(object, collections.Iterable)
  • 他们似乎都做了同样的事情,我找不到任何能区分他们的医生。有什么区别?为什么我会选择一个而不是另一个?


    Python的方式是

    • 假设它是不可测的
    • 如果不是,则捕获异常

    然而,用常识来使用它。也就是说,只有当你有理由相信你的对象在大多数情况下是不可改变的时候,你才这么做。

    Also, take care of strings, which are treated as iterables, but in most practical use cases, they should not be. In that case, the practice is to explicitly check isinstance(.., str)