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 등) 사용법을 예제 중심으로 살펴보겠습니다!
반응형