본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] 클래스 vs 함수 : 언제 클래스를 사용하고, 언제 함수가 더 적합할까?

by Papa Martino V 2025. 7. 26.
728x90

클래스 vs 함수 : 언제 클래스를 사용하고, 언제 함수가 더 적합할까?
[PYTHON] 클래스 vs 함수

 

 

Python은 객체지향(Object-Oriented Programming, OOP)과 절차지향(Procedural Programming)을 모두 지원하는 다재다능한 언어입니다. 이 덕분에 프로그래머는 같은 기능을 함수로도, 클래스로도 구현할 수 있습니다. 하지만 언제 클래스를 써야 하고, 언제 함수가 더 효과적인지에 대한 혼란이 생기기 쉽습니다. 이 글에서는 Python의 함수와 클래스의 핵심 개념과 실제 활용 사례를 통해 그 차이점과 장단점을 정리해봅니다.


1. Python 함수란?

함수는 코드의 재사용성과 구조화를 위한 가장 기본적인 단위입니다. 독립적인 작업을 수행하며, 입력값(인자)을 받아 결과를 반환합니다.

def greet(name):
    return f"Hello, {name}!"

print(greet("마르티노"))
  • 작고 명확한 작업 단위에 적합
  • 상태 유지가 필요 없는 로직에 효과적

2. Python 클래스란?

클래스는 상태와 동작을 함께 관리하는 객체지향 프로그래밍(OOP)의 기본 단위입니다. 데이터(속성)와 함수(메서드)를 묶어 하나의 구조로 관리합니다.

class Greeter:
    def __init__(self, name):
        self.name = name

    def greet(self):
        return f"Hello, {self.name}!"

g = Greeter("마르티노")
print(g.greet())
  • 상태를 갖는 로직에 적합 (예: 사용자 세션, 설정 저장)
  • 확장성 있는 코드 설계에 유리

3. 클래스 vs 함수 비교 요약표

항목 함수 (Function) 클래스 (Class)
사용 목적 단일 작업 또는 계산 상태 저장 및 관련 메서드 집합
코드 재사용 함수 호출로 재사용 객체 인스턴스로 재사용
상태 관리 상태 없음 (stateless) 인스턴스 상태 유지 (stateful)
확장성 낮음 (함수 조합에 의존) 높음 (상속, 다형성 활용)
적합한 사례 단순 계산, 알고리즘 게임 캐릭터, 웹 사용자, 설정 등 복합 구조

4. 어떤 상황에 클래스를 선택해야 할까?

다음 조건에 해당하면 클래스를 사용하는 것이 좋습니다.

  • 관련된 데이터와 메서드를 함께 묶고 싶을 때
  • 객체별로 독립적인 상태를 유지해야 할 때
  • 확장성 있는 구조가 필요한 경우 (예: 상속)
  • 여러 기능이 조합된 시스템을 구성할 때 (MVC 구조 등)

5. 함수가 더 적절한 경우는?

다음과 같은 경우에는 굳이 클래스를 사용할 필요가 없습니다.

  • 단일 작업에 집중하는 경우
  • 프로그램 흐름이 간단한 경우
  • 전역 상태를 유지할 필요가 없는 경우

6. 실제 사례 비교

함수 기반 데이터 처리

def calc_total(prices):
    return sum(prices)

print(calc_total([100, 200, 300]))

클래스 기반 데이터 처리

class Cart:
    def __init__(self):
        self.prices = []

    def add(self, price):
        self.prices.append(price)

    def total(self):
        return sum(self.prices)

c = Cart()
c.add(100)
c.add(200)
print(c.total())

클래스는 상태를 유지하며 복합 로직을 깔끔하게 묶을 수 있고, 함수는 빠르고 직관적인 실행이 가능합니다.


7. 객체지향 패턴과의 연결

클래스를 활용하면 디자인 패턴(싱글톤, 팩토리, 전략 등)을 구현할 수 있어 복잡한 시스템 설계에 유리합니다. 반면, 함수는 일회성 계산과 데이터 흐름 중심의 코드에 효과적입니다.


8. 결론

Python에서는 클래스와 함수 모두 상황에 따라 강력한 도구입니다. 중요한 것은 문제 해결에 가장 적합한 방법을 선택하는 것이며, 코드의 가독성, 유지보수성, 확장성까지 고려한 전략적 선택이 중요합니다. 단순한 기능은 함수로, 구조화된 로직은 클래스로 구현해보세요.


출처 (References)

728x90