Programming Languages/Python
클래스와 객체지향 프로그래밍
newclass
2025. 3. 26. 04:03
1. 클래스와 객체지향 프로그래밍
객체지향 프로그래밍 소개
1.1 객체지향 프로그래밍이란?
객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 객체(Object)들의 모음으로 구성하는 프로그래밍 패러다임입니다. 각 객체는 데이터(속성)와 해당 데이터를 처리하는 메서드(기능)를 가지고 있습니다.
1.2 객체지향 프로그래밍의 장점
- 코드 재사용성: 한번 작성한 클래스는 여러 곳에서 재사용할 수 있습니다.
- 유지보수 용이성: 객체 단위로 코드가 모듈화되어 있어 디버깅과 수정이 쉽습니다.
- 확장성: 기존 코드 수정 없이 새로운 기능을 추가할 수 있습니다.
- 현실 세계 모델링: 현실 세계의 개체를 프로그램 내에서 표현하기 용이합니다.
1.3 객체지향 프로그래밍의 핵심 개념
- 클래스(Class): 객체를 생성하기 위한 템플릿 또는 청사진
- 객체(Object): 클래스의 인스턴스(실체)
- 속성(Attribute): 객체의 상태나 특성을 나타내는 변수
- 메서드(Method): 객체가 수행할 수 있는 행동(함수)
2. 파이썬에서의 클래스와 객체
2.1 클래스 정의하기
파이썬에서 클래스는 class 키워드를 사용하여 정의합니다.
class 클래스이름:
# 클래스 내용(속성과 메서드)
간단한 예시:
class Dog:
# 클래스 변수 (모든 인스턴스가 공유)
species = "Canis familiaris"
# 초기화 메서드 (__init__): 객체가 생성될 때 자동으로 호출
def __init__(self, name, age):
# 인스턴스 변수 (각 객체마다 고유)
self.name = name
self.age = age
# 인스턴스 메서드
def bark(self):
return f"{self.name}가 짖습니다: 멍멍!"
# 인스턴스 메서드
def get_info(self):
return f"{self.name}는 {self.age}살입니다."
2.2 객체(인스턴스) 생성하기
클래스를 정의한 후에는 해당 클래스의 인스턴스(객체)를 생성할 수 있습니다.
# Dog 클래스의 인스턴스 생성
my_dog = Dog("멍멍이", 3)
your_dog = Dog("바둑이", 5)
# 인스턴스 메서드 호출
print(my_dog.bark()) # 출력: 멍멍이가 짖습니다: 멍멍!
print(your_dog.get_info()) # 출력: 바둑이는 5살입니다.
# 인스턴스 변수 접근
print(my_dog.name) # 출력: 멍멍이
print(your_dog.age) # 출력: 5
# 클래스 변수 접근
print(my_dog.species) # 출력: Canis familiaris
print(Dog.species) # 출력: Canis familiaris (클래스를 통해 직접 접근)
2.3 self 매개변수
파이썬 클래스의 메서드에서 첫 번째 매개변수는 관례적으로 self라고 명명하며, 이는 메서드를 호출한 인스턴스 자신을 가리킵니다. 이를 통해 인스턴스의 속성과 메서드에 접근할 수 있습니다.
class Person:
def __init__(self, name):
self.name = name # self를 통해 인스턴스 변수 설정
def say_hello(self):
# self를 통해 인스턴스 변수 접근
return f"안녕하세요, 제 이름은 {self.name}입니다."