08.개발&프로그래밍/1.파이썬

2부. 파이썬 중급 문법 & 실무 활용 – 1. 파이썬 OOP 기초: 클래스와 객체지향 프로그래밍

JWJ Family 2025. 7. 12. 08:10
728x90

클래스 정의, 인스턴스, 생성자, 상속, 다형성 등 Python 객체지향의 기본 개념을 예제 중심으로 설명합니다.

1. 클래스와 인스턴스 개념

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        return f"안녕하세요, 제 이름은 {self.name} 입니다."

p = Person("홍길동", 30)
print(p.greet())

`class`는 설계도, `p = Person(...)`은 실체인 인스턴스입니다. `__init__`은 생성자 역할을 하며, `self`는 인스턴스 자신을 나타냅니다.

2. 상속(Inheritance)

class Student(Person):
    def __init__(self, name, age, major):
        super().__init__(name, age)
        self.major = major

    def greet(self):
        return super().greet() + f" 전공은 {self.major}입니다."

s = Student("이순신", 25, "컴퓨터공학")
print(s.greet())

상속은 “is‑a” 관계 모델링에 적합하며, `super()`로 부모 클래스 기능을 확장할 수 있습니다.

3. 다형성(Polymorphism)

class Dog(Person):
    def greet(self):
        return f"{self.name} (강아지)가 멍멍!"

objs = [p, s, Dog("바둑이", 5)]
for o in objs:
    print(o.greet())

각 객체가 `greet()` 메서드를 서로 다르게 구현하여, 같은 호출에도 다른 결과를 보여줍니다.

4. 캡슐화 및 클래스 속성

class Circle:
    pi = 3.14159  # 클래스 속성

    def __init__(self, r):
        self.radius = r

    def area(self):
        return self.pi * self.radius ** 2

c = Circle(5)
print(c.area())

클래스 변수는 모든 인스턴스 간 공유되고, 메서드 내부에서 접근할 수 있습니다.

정리 및 다음 글 예고

  • 클래스는 데이터와 기능을 묶는 설계 단위이며, `__init__`, `self`로 인스턴스를 초기화합니다.
  • 상속으로 재사용성과 구조 확장이 가능하며, `super()`로 부모 기능 호출이 가능합니다.
  • 다형성을 통해 동일 인터페이스에 다양한 구현을 위한 유연성을 확보할 수 있습니다.

🎯 다음 글에서는 Python 표준 라이브러리(datetime, os, random 등) 사용법을 예제 중심으로 살펴보겠습니다!

반응형