파이썬/기초 프로그래밍

파이썬 hasattr() 제대로 이해하기 – 반복 가능한 객체 판별

Data Jun 2025. 3. 27. 15:27

 파이썬을 공부하다 보면 이런 코드를 자주 보게 됩니다:

if hasattr(x, '__iter__'):

이게 무슨 뜻일까요?
한 줄 한 줄 뜯어보면서 이해해봅시다 

 

hasattr()는 무슨 뜻일까?

hasattr는 has attribute의 줄임말로,
"이 객체가 해당 속성을 가지고 있는지" 확인하는 함수입니다.

 

기본 문법:

hasattr(객체, '속성이름')

→ 결과는 True 또는 False로 나옵니다.

 

 

예시로 이해해보기

class Dog:
    def bark(self):
        print("멍멍")

dog = Dog()

hasattr(dog, 'bark')    # ✅ True
hasattr(dog, 'run')     # ❌ False

dog이라는 객체가 bark라는 속성을 가지고 있기 때문에 True가 됩니다.
run은 없으니 False죠.

 

그럼 __iter__는 뭐야?

파이썬에서 __iter__는 **반복 가능한 객체(iterable)**가 가지고 있는 스페셜 메서드입니다.

즉, 아래 코드는 이렇게 해석됩니다:

if hasattr(x, '__iter__'):
    # x는 반복 가능한 객체입니다!

 

예시: 반복 가능한지 판별하기

hasattr([1, 2, 3], '__iter__')    # ✅ True
hasattr("hello", '__iter__')     # ✅ True
hasattr(123, '__iter__')         # ❌ False

 

실전에서 자주 쓰는 이유

  • 코드에서 유연하게 타입을 체크하지 않고도 기능을 확인할 수 있어요
  • 특히 재귀 처리, 반복 처리, 타입별 동작 분기에 자주 사용됩니다

 

마무리 정리

  • hasattr()는 객체가 어떤 속성을 가지고 있는지 확인하는 함수
  • __iter__는 반복 가능한 객체를 의미하는 스페셜 메서드
  • 그래서 hasattr(x, '__iter__')는 x가 반복 가능한지 판별하는 코드