프로그래밍 패러다임 중 하나인 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 코드를 객체 단위로 구성하여 효율적이고 유지보수가 쉬운 프로그램을 작성할 수 있게 합니다.
Python은 객체지향 프로그래밍을 자연스럽게 지원하며, 이를 통해 복잡한 문제를 직관적으로 해결할 수 있습니다.
이번 글에서는 클래스, 객체, 메서드, 상속, 캡슐화와 같은 OOP의 핵심 개념을 예제와 함께 살펴보겠습니다.
[파이썬 개념 시리즈 #3] 객체지향 프로그래밍 - 클래스와 객체의 이해
1. 클래스와 객체
클래스는 설계도, 객체는 설계도를 따라 만들어진 제품으로 이해하면 쉽습니다.
# 클래스 정의
class Person:
def __init__(self, name, age):
self.name = name # 속성
self.age = age # 속성
# 객체 생성
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)
# 객체의 속성 접근
print(person1.name, person1.age) # Alice 30
print(person2.name, person2.age) # Bob 25
[python] 파이썬 리스트 찾고자 하는 값 개수 세기 - count() |
사이썬 3.0 출시 - 파이썬 코드로 C언어 컴파일 하다 |
[python] 파이썬 print 문자열 포매팅(f-string) |
2. 메서드
메서드(Method)는 클래스 내부에 정의된 함수로, 객체와 관련된 동작을 정의합니다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self): # 메서드 정의
print(f"안녕하세요, 제 이름은 {self.name}이고, 나이는 {self.age}살입니다.")
# 객체 생성 및 메서드 호출
person = Person("Alice", 30)
person.greet() # 안녕하세요, 제 이름은 Alice이고, 나이는 30살입니다.
3. 상속
상속(Inheritance)은 기존 클래스의 기능을 물려받아 새로운 클래스를 생성하는 것입니다.
상속을 통해 코드의 재사용성을 높일 수 있습니다.
# 부모 클래스
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name}이(가) 소리를 냅니다.")
# 자식 클래스
class Dog(Animal):
def speak(self): # 메서드 오버라이딩
print(f"{self.name}이(가) 멍멍 소리를 냅니다.")
# 객체 생성
dog = Dog("강아지")
dog.speak() # 강아지가 멍멍 소리를 냅니다.
4. 캡슐화와 접근 제어
캡슐화(Encapsulation)는 객체의 속성과 메서드를 외부에서 직접 접근하지 못하도록 제한하는 개념입니다.
Python에서는 변수명 앞에 밑줄(`_`)을 추가하여 비공개 속성을 표시합니다.
class BankAccount:
def __init__(self, owner, balance):
self.owner = owner
self.__balance = balance # 비공개 속성
def deposit(self, amount):
self.__balance += amount
def get_balance(self):
return self.__balance
# 객체 생성
account = BankAccount("Alice", 1000)
account.deposit(500)
print(account.get_balance()) # 1500
파이썬 큰 따옴표, 작은 따옴표 출력 |
[python] 파이썬 텍스트 파일 읽기, 쓰기 |
[Python] 파이썬 사칙연산 |
마치며
Python의 객체지향 프로그래밍(OOP)은 클래스를 기반으로 코드를 구조화하고, 코드의 재사용성과 유지보수성을 높이는 강력한 도구입니다.
이번 글에서는 클래스, 객체, 메서드, 상속, 캡슐화 등 OOP의 핵심 개념을 설명하고 예제를 통해 살펴보았습니다.
이러한 개념을 이해하고 실습하면 복잡한 문제를 효율적으로 해결할 수 있으며, 실용적이고 확장 가능한 프로그램을 작성하는 데 큰 도움이 됩니다.
다음 시리즈에서는 리스트, 딕셔너리, 집합과 같은 Python의 주요 데이터 구조를 다룰 예정이니 기대해 주세요!
Python 학습 여정을 이어가며 더 나은 프로그래머로 성장해 보세요.
▼ 함께 보면 좋은 글 ▼
'Programming & Platform > Python' 카테고리의 다른 글
[파이썬 개념 시리즈 #5] 파일 입출력 - 데이터 저장과 로드의 기초 (1) | 2024.11.28 |
---|---|
[파이썬 개념 시리즈 #4] 데이터 처리 필수 - 리스트, 딕셔너리, 집합의 모든 것 (0) | 2024.11.27 |
[파이썬 개념 시리즈 #2] 함수와 모듈 - 효율적인 코드 작성의 시작 (1) | 2024.11.25 |
[파이썬 개념 시리즈 #1] 초보자를 위한 필수 기초 개념 정리 (0) | 2024.11.24 |