프로그래밍에서 **"래핑(wrapping)"**이란, 이미 존재하는 기능이나
객체를 감싸서 자신만의 인터페이스로 재정의하거나 확장하는 방식을 말합니다.
쉽게 말해, “기존 기능을 직접 쓰는 대신, 한 겹 더 감싸서 내가 원하는 방식으로 다루는 것”
1. 예시 ① : 함수 래핑 (기초적인 형태)
def my_print(msg):
print("[LOG]", msg)
→ print()를 직접 쓰는 대신 my_print()로 감싸서 출력 앞에 [LOG]를 붙이도록 한 것이 함수 래핑입니다.
2. 예시 ② : 클래스 래핑 (대표적인 구조)
class MyList:
def __init__(self, data):
self.data = data
def append(self, item):
print("추가되는 항목:", item)
self.data.append(item)
→ 이 클래스는 내부적으로 기존 list의 기능을 래핑하고 있습니다.
→ append()를 감싸서, 리스트에 항목을 추가하면서 로그도 남기죠.
3. 왜 래핑을 사용할까?
| 목적 | 설명 |
| 인터페이스 변경 | 함수나 클래스의 사요업을 바꾸고 싶을 때 |
| 기능 확장 | 기존 기능에 로깅, 검증, 캐싱 등을 추가하고 싶을 때 |
| 재사용성 향상 | 공통 로직을 하나로 모아두고 재사용하고 싶을 때 |
| 코드 가독성 | 좀 더 의미 있는 이름이나 구조로 감싸서 직관적으로 만들기 위해 |
하지만 주의할 점
- 기능 추가 없이 단순히 감싸기만 한다면: 오히려 코드가 복잡해지고 유지보수가 어려워질 수 있습니다.
- 그래서 래핑은 실제 목적이 뚜렷할 때 사용하는 것이 좋습니다.
정리하면
Wrapping = 기존 기능을 감싸서 내 식대로 다루기
- 함수나 클래스 위에 한 겹 껍질을 씌운다고 생각하면 됩니다.
- 잘 활용하면 유연한 설계를 도와주지만, 과하면 "괜히 감싼 코드"가 될 수도 있습니다.
'파이썬 > 클래스와 객체 지향' 카테고리의 다른 글
| 클래스 vs 함수: 어떻게 설계하고 구성할 것인가? (0) | 2025.06.22 |
|---|---|
| _getitem__ 매직 메서드란? (0) | 2025.06.07 |
| Python 생성자 함수: 가변 객체 사용 (0) | 2025.06.01 |
| Python 생성자 함수 __init__의 권장 사용법 (0) | 2025.06.01 |
| dataclass - 주요기능 설명 (0) | 2025.06.01 |