기초

파이썬 기초 07강 — 객체지향 기초: 클래스와 객체

🎯 학습 목표

  • 클래스와 객체(인스턴스)의 관계를 이해한다.
  • __init__과 메서드로 클래스를 정의한다.
  • 상속으로 기존 클래스를 확장한다.

📖 클래스는 “설계도”, 객체는 “제품”

클래스(class)는 데이터(속성)와 기능(메서드)을 하나로 묶는 설계도입니다. 그 설계도로 찍어낸 실제 물건이 객체(object) = 인스턴스(instance)입니다. “붕어빵 틀(클래스)”과 “구워 나온 붕어빵들(객체)”의 관계입니다. 객체지향은 관련된 데이터와 동작을 한곳에 모아 복잡한 프로그램을 정리하는 방식입니다.

💻 클래스 정의하기

class Dog:
    def __init__(self, name, age):   # 생성자: 객체 만들 때 자동 호출
        self.name = name             # self.속성 = 객체의 데이터
        self.age = age

    def bark(self):                  # 메서드: 객체의 기능
        return f"{self.name}: 멍멍!"

# 객체(인스턴스) 만들기
d1 = Dog("바둑이", 3)
d2 = Dog("뽀삐", 5)

print(d1.name)      # 바둑이   속성 접근
print(d1.bark())    # 바둑이: 멍멍!  메서드 호출
print(d2.bark())    # 뽀삐: 멍멍!

self는 “그 객체 자신”을 가리킵니다. 메서드의 첫 매개변수는 항상 self이고, self.name처럼 객체의 데이터에 접근합니다. __init__은 객체가 만들어질 때 자동 실행되어 초기 속성을 세팅하는 생성자입니다.

💻 상속 — 기존 클래스를 물려받아 확장

class Animal:
    def __init__(self, name):
        self.name = name
    def eat(self):
        return f"{self.name}가 먹는다"

class Cat(Animal):              # Animal을 상속
    def meow(self):            # 새 기능 추가
        return f"{self.name}: 야옹"

c = Cat("나비")
print(c.eat())     # 나비가 먹는다   ← 부모의 기능 그대로 사용
print(c.meow())    # 나비: 야옹      ← 자식의 새 기능

상속은 공통 기능을 부모 클래스에 두고, 자식 클래스가 물려받아 추가·변경하는 것입니다. 중복을 줄이고 구조를 깔끔하게 만듭니다.

💻 메서드 오버라이딩 — 부모 기능 재정의

class Animal:
    def sound(self):
        return "..."

class Dog(Animal):
    def sound(self):           # 같은 이름으로 덮어쓰기
        return "멍멍"

class Cat(Animal):
    def sound(self):
        return "야옹"

for a in [Dog(), Cat()]:
    print(a.sound())   # 멍멍 / 야옹  (같은 호출, 다른 동작)

⚠️ 주의사항

  • 메서드의 첫 매개변수 self를 빠뜨리면 에러가 납니다. 호출할 때는 self에 값을 직접 넘기지 않습니다(d1.bark() — 파이썬이 자동으로 d1을 self로 전달).
  • 클래스 이름은 관례상 대문자로 시작(PascalCase)합니다: Dog, BankAccount.

🧭 마무리 & 다음 단계

  • 이 강좌 요약: 변수·자료형(1·2강) → 자료구조(3강) → 제어문(4강) → 함수(5강) → 모듈·예외·파일(6강) → 클래스(7강). 파이썬으로 프로그램을 만드는 기본기를 모두 다뤘습니다.
  • 다음 단계: 표준 라이브러리 더 익히기, 가상환경(venv)과 pip로 외부 패키지 쓰기, 그리고 관심 분야(웹=Flask/Django, 데이터=pandas, 자동화 등)로 확장.
  • 꾸준히 작은 프로그램을 직접 만들어 보는 것이 가장 빠른 길입니다.