728x90
반응형
질문 : 파이썬에서 객체가 반복 가능한지 어떻게 결정합니까?
isiterable
과 같은 방법이 있습니까? 지금까지 찾은 유일한 해결책은 전화하는 것입니다.
hasattr(myObj, '__iter__')
그러나 이것이 얼마나 어리석은 지 잘 모르겠습니다.
답변
__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__
메소드를 확인합니다.- 또 다른 일반적인 비단뱀 접근 방식은 반복 가능하다고 가정하고 주어진 객체에서 작동하지 않으면 정상적으로 실패하는 것입니다. Python 용어집 :그 방법 또는 속성 서명 검사를 통해서가 아니라 강조 인터페이스에 의해 어떤 종류의 객체 ( "오리처럼 외모와 오리처럼 꽥꽥 경우, 오리해야합니다.")에 명시 적 관계에 의해 객체의 유형을 결정하는 파이썬 프로그래밍 스타일 특정 유형이 아닌 잘 설계된 코드는 다형성 대체를 허용하여 유연성을 향상시킵니다. 덕 타이핑은 type () 또는 isinstance ()를 사용하는 테스트를 피합니다. 대신, 일반적으로 EAFP (권한보다 용서하기 쉬움) 스타일의 프로그래밍을 사용합니다. ...
try: _ = (e for e in my_object) except TypeError: print my_object, 'is not iterable'
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
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python 여러 줄 문자열을 작성할 때 적절한 들여쓰기 (0) | 2021.12.19 |
---|---|
Python에서 예외를 출력하는 방법 (0) | 2021.12.19 |
파이썬에서 문자열의 부분 문자열을 얻는 방법 (0) | 2021.12.19 |
Python의 집합에 값을 추가 하는 방법 (0) | 2021.12.19 |
Python 에서 PHP의 var_dump ()와 같은 기능 (0) | 2021.12.19 |