본문 바로가기
Programming & Platform/Python

[파이썬 개념 시리즈 #3] 객체지향 프로그래밍 - 클래스와 객체의 이해

by 코드스니펫 2024. 11. 26.
반응형

프로그래밍 패러다임 중 하나인 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 코드를 객체 단위로 구성하여 효율적이고 유지보수가 쉬운 프로그램을 작성할 수 있게 합니다.

 

Python은 객체지향 프로그래밍을 자연스럽게 지원하며, 이를 통해 복잡한 문제를 직관적으로 해결할 수 있습니다.

 

이번 글에서는 클래스, 객체, 메서드, 상속, 캡슐화와 같은 OOP의 핵심 개념을 예제와 함께 살펴보겠습니다.

 

이전글 - [파이썬 개념 시리즈 #2] 함수와 모듈

다음글 - [파이썬 개념 시리즈 #4] 데이터 처리

객체지향 프로그래밍
객체지향 프로그래밍

 

[파이썬 개념 시리즈 #3] 객체지향 프로그래밍 - 클래스와 객체의 이해

 

1. 클래스와 객체

 

  • 클래스(Class): 객체를 생성하기 위한 설계도
  • 객체(Object): 클래스를 기반으로 생성된 실체

 

클래스는 설계도, 객체는 설계도를 따라 만들어진 제품으로 이해하면 쉽습니다.

 

# 클래스 정의
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 학습 여정을 이어가며 나은 프로그래머로 성장해 보세요.

 

 

▼ 함께 보면 좋은 글 ▼

ChatGPT | 챗GPT로 파이썬 GUI 곱셈 프로그램 만들기
이것이 코딩 테스트다 - 큰 수의 법칙 파이썬 문제풀이
파이썬 PyQt 완벽 가이드 - 초보자를 위한 소개와 활용 예제
[python] 파이썬 리스트 찾고자 하는 값 개수 세기 - count()
사이썬 3.0 출시 - 파이썬 코드로 C언어 컴파일 하다
[python] 파이썬 print 문자열 포매팅(f-string)
파이썬 큰 따옴표, 작은 따옴표 출력
[python] 파이썬 텍스트 파일 읽기, 쓰기
[Python] 파이썬 사칙연산