객체가 리스트나 튜플일때만 True, 스트링은 False처리하려면 어떻게 하죠


어떤 객체가 리스트/튜플이면 프로그램을 계속 실행하고, 스트링의 경우는 assert 하는 스크립트를 만드려고 합니다.

assert isinstance(lst, list)isinstance(lst, tuple) 같이 쓰는 것 말고 더 나은 방법이 있을까요

  • 2016년 01월 27일에 작성됨

조회수 121


1 답변


좋아요
0
싫어요
채택취소하기

먼저, isinstance()의 두 번째 인자는 튜플형을 받을 수 있기 때문에 assert isinstance(lst, list) or isinstance(lst, tuple)assert isinstance(lst, (list, tuple))로 줄일 수 있습니다.

그리고 assert를 쓸 때, 제가 생각하기에는 assert not isinstance(lst, basestring) 로 쓰는 게 더 나은 방법인 것 같습니다 (파이썬3은 basestring을 쓸 수 없으니 string으로 바꿔주세요)

질문하신 방법처럼 쓴다면 list/tuplesubclass는 아니지만, list/tuple처럼 작동하는 다른 타입에서도 assertionError가 발생하기 때문입니다.

  • 2016년 01월 27일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close