파이썬을 공부하다 보면 이런 코드를 자주 보게 됩니다:
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가 반복 가능한지 판별하는 코드
'파이썬 > 기초 프로그래밍' 카테고리의 다른 글
_wrapfunc()는 NumPy 내부에서 정의한 유틸리티 함수 (0) | 2025.03.27 |
---|---|
NumPy의 _wrapfunc()는 뭘 할까? — np.round()의 진짜 동작 방식 (0) | 2025.03.27 |
파이썬에서 _internal.py 같은 모듈은 왜 언더바로 시작할까? (0) | 2025.03.27 |
파이썬 스페셜 메서드는 왜 꼭 정해진 이름을 써야 할까? (0) | 2025.03.27 |
파이썬 __all__ 완벽 정리 – 진짜 하는 일이 뭘까? (0) | 2025.03.27 |