파이썬/기초 프로그래밍

파이썬 데이터 모델링: 매직 메서드로 객체를 데이터처럼 다루기

Data Jun 2025. 9. 6. 18:19

파이썬에서 “데이터 모델링(Data Modeling)”은 보통 데이터베이스 설계 문맥에서 많이 쓰이지만, 언어 자체 관점에서는 조금 다르게 해석됩니다. 파이썬은 **모든 것이 객체(Object)**라는 철학을 가지고 있고, 우리가 정의한 클래스 역시 내장 타입처럼 동작할 수 있도록 만들 수 있습니다. 이때 핵심이 바로 **매직 메서드(dunder method)**입니다

 

1. 매직 메서드란?

매직 메서드는 이름 앞뒤에 __(언더스코어)가 붙은 특별한 메서드를 말합니다.
예: __str__, __repr__, __len__, __add__, __getitem__ 등

이 메서드들을 구현하면, 객체가 내장 타입(숫자, 문자열, 리스트 등)처럼 자연스럽게 동작할 수 있습니다.

 

2. 예시로 보는 파이썬 데이터 모델링

1️⃣ 문자열처럼 동작하기

class Fruit:
    def __init__(self, name, price):
        self.name = name
        self.price = price
    
    def __str__(self):   # 사용자 친화적 출력
        return f"{self.name} ({self.price}원)"
    
    def __repr__(self):  # 디버깅용 출력
        return f"Fruit({self.name!r}, {self.price!r})"

apple = Fruit("Apple", 1000)
print(apple)        # Apple (1000원)
print(repr(apple))  # Fruit('Apple', 1000)

 

 2️⃣ 숫자처럼 동작하기

class Fruit:
    def __init__(self, price):
        self.price = price
    
    def __add__(self, other):   # + 연산자 재정의
        return self.price + other.price

apple = Fruit(1000)
banana = Fruit(2000)
print(apple + banana)  # 3000

 

3️⃣ 리스트처럼 동작하기

class Basket:
    def __init__(self, items):
        self.items = items
    
    def __len__(self):
        return len(self.items)
    
    def __getitem__(self, index):
        return self.items[index]

basket = Basket(["Apple", "Banana", "Orange"])
print(len(basket))   # 3
print(basket[1])     # Banana

 

 

 

정리하면

  • 파이썬 데이터 모델링 = 매직 메서드를 활용해 객체의 행위를 데이터처럼 정의하는 것
  • 우리가 만든 클래스가 문자열, 숫자, 리스트 같은 내장 타입처럼 동작할 수 있도록 설계할 수 있다.
  • 이를 통해 코드의 직관성과 재사용성이 크게 높아진다.

결론적으로, 파이썬에서의 데이터 모델링은 단순히 데이터를 담는 그릇을 설계하는 것을 넘어, 데이터처럼 행동하는 객체를 정의하는 과정이라고 할 수 있습니다.