Python 클래스 및 객체 지향 프로그래밍

Python 클래스, 객체, 상속 및 OOP 개념에 대한 완전한 소개입니다. 강력한 데이터 모델을 만들고 Python 애플리케이션을 확장하세요.

에디터에서 사용해 보세요

개요

객체 지향 프로그래밍(OOP)은 크고 복잡한 애플리케이션을 구조화하기 위해 Python에서 많이 활용되는 강력한 프로그래밍 패러다임입니다. 순차 함수 작성에 중점을 두는 절차적 프로그래밍과 달리 OOP는 "객체" 개념을 중심으로 진행됩니다. 객체는 데이터(속성이라고 함)와 동작(메서드라고 함)을 함께 묶는 독립적인 단위입니다.

Python의 '클래스'는 객체 생성을 위한 청사진 또는 템플릿 역할을 합니다. 클래스를 집의 건축 청사진처럼 생각해보세요. 청사진 자체는 집이 아니지만 집이 어떤 모습일지, 어떤 특징을 가질지 정의합니다. 클래스를 인스턴스화하면 해당 청사진을 기반으로 구축된 유형의 "객체" 또는 "인스턴스"가 생성됩니다. 단일 클래스에서 수백 개의 고유한 인스턴스를 만들 수 있습니다.

Python 클래스의 핵심은 종종 생성자라고 불리는 `__init__()` 메서드입니다. 이 특수 메소드는 클래스에서 새 객체가 생성되는 순간 자동으로 실행됩니다. 객체의 기본 상태를 초기화하고 객체에 특정 속성을 첨부하는 일을 담당합니다. `self` 매개변수는 인스턴스 메소드에 필수로 전달되어 조작되는 특정 객체에 대한 참조 역할을 합니다.

OOP의 가장 강력한 기둥 중 하나는 상속입니다. 상속을 사용하면 기존 클래스(부모 클래스)의 모든 특성과 메서드를 상속하는 새 클래스(자식 클래스)를 만들 수 있습니다. 이는 대규모 코드 재사용을 촉진합니다. 예를 들어 일반 `Vehicle` 클래스가 있고 `Vehicle`에서 상속되지만 고유한 특정 동작을 추가하는 `Car` 및 `Truck` 하위 클래스를 만들 수 있습니다.

또 다른 핵심 개념은 객체의 내부 상태를 숨기고 모든 상호 작용이 지정된 방법을 통해 발생하도록 요구하는 개념인 캡슐화입니다. Python에는 `private` 또는 `protected`와 같은 엄격한 액세스 수정자가 없지만 속성을 클래스 외부에서 직접 조작해서는 안 된다는 신호를 보내기 위해 명명 규칙(변수 앞에 밑줄 `_`을 붙이는 것과 같은)에 의존합니다.

코드 및 실행 출력

Car 객체 인스턴스의 엄격한 표현을 정의하고 클래스 메서드를 활용하여 로컬 인스턴스 데이터를 변경합니다.

class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model
        self.is_running = False

    def start(self):
        self.is_running = True
        return f"{self.make} {self.model} has started."

my_car = Car("Toyota", "Corolla")
print(my_car.make)
print(my_car.start())
터미널 출력
Toyota
Toyota Corolla has started.

단계별 구현

  • 실제 엔터티 모델링(사용자, 제품, 카트)
  • 게임 엔진 및 엔터티 구성 요소 시스템 구축
  • 재사용 가능한 그래픽 사용자 인터페이스 구성 요소 만들기

자주 묻는 질문

"self"은(는) 무슨 뜻인가요?

"self"는 클래스의 인스턴스를 나타냅니다. "self" 키워드를 사용하면 파이썬에서 클래스의 속성과 메서드에 액세스할 수 있습니다.

Python은 다중 상속을 지원합니까?

예, Python에서는 클래스가 여러 상위 클래스로부터 상속받을 수 있도록 허용합니다.

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.