프로그래밍 언어/Python

파이썬에서 반복 가능한 객체인지 확인하는 방법

Rateye 2021. 12. 19. 14:29
728x90
반응형
질문 : 파이썬에서 객체가 반복 가능한지 어떻게 결정합니까?

isiterable 과 같은 방법이 있습니까? 지금까지 찾은 유일한 해결책은 전화하는 것입니다.

hasattr(myObj, '__iter__')

그러나 이것이 얼마나 어리석은 지 잘 모르겠습니다.

답변

  1. __iter__ 확인은 시퀀스 유형에서 작동하지만 예를 들어 Python 2의 문자열에서는 실패합니다. 나도 정답을 알고 싶습니다. 그때까지 한 가지 가능성이 있습니다 (문자열에서도 작동합니다).
    from __future__ import print_function
    
    try:
        some_object_iterator = iter(some_object)
    except TypeError as te:
        print(some_object, 'is not iterable')
    iter 내장은 __iter__ 메소드 또는 문자열의 경우 __getitem__ 메소드를 확인합니다.
  2. 또 다른 일반적인 비단뱀 접근 방식은 반복 가능하다고 가정하고 주어진 객체에서 작동하지 않으면 정상적으로 실패하는 것입니다. Python 용어집 :그 방법 또는 속성 서명 검사를 통해서가 아니라 강조 인터페이스에 의해 어떤 종류의 객체 ( "오리처럼 외모와 오리처럼 꽥꽥 경우, 오리해야합니다.")에 명시 적 관계에 의해 객체의 유형을 결정하는 파이썬 프로그래밍 스타일 특정 유형이 아닌 잘 설계된 코드는 다형성 대체를 허용하여 유연성을 향상시킵니다. 덕 타이핑은 type () 또는 isinstance ()를 사용하는 테스트를 피합니다. 대신, 일반적으로 EAFP (권한보다 용서하기 쉬움) 스타일의 프로그래밍을 사용합니다. ...
    try:
       _ = (e for e in my_object)
    except TypeError:
       print my_object, 'is not iterable'
  3. collections 모듈은 몇 가지 추상 기본 클래스를 제공하여 클래스 나 인스턴스가 특정 기능을 제공하는지 물어볼 수 있습니다. 예를 들면 다음과 같습니다.
    from collections.abc import Iterable
    
    if isinstance(e, Iterable):
        # e is iterable
    __getitem__ 통해 반복 가능한 클래스를 확인하지 않습니다.

 

 

출처 : https://stackoverflow.com/questions/1952464/in-python-how-do-i-determine-if-an-object-is-iterable
728x90
반응형