본문 바로가기
파이썬 개발 정보

파이썬 클래스와 객체지향 프로그래밍 배우기 쉽게 시작하기

by elsnoriga 2024. 11. 28.
반응형

파이썬 클래스와 객체지향 프로그래밍 배우기 시작하기

파이썬 클래스와 객체지향 프로그래밍 배우기는 현대 프로그래밍의 핵심 개념을 이해하고, 더 나은 코드 구조를 작성하는 데 도움을 줍니다. 객체지향 프로그래밍(OOP)은 현실 세계의 개념을 프로그래밍에 적용하여 코드의 재사용성과 유지보수성을 높이는 데 중점을 둡니다. 이 글에서는 파이썬에서 클래스와 객체를 사용하여 객체지향 프로그래밍의 기초를 배우고, 이를 실습할 수 있는 간단한 예제와 함께 설명하겠습니다.

파이썬 클래스와 객체지향 프로그래밍 배우기 쉽게 시작하기
파이썬 클래스와 객체지향 프로그래밍 배우기 쉽게 시작하기

클래스와 객체의 기본 개념

클래스는 객체를 생성하기 위한 설계도라고 할 수 있습니다. 객체는 클래스에 정의된 속성(데이터)과 메서드(함수)를 가지고 있으며, 실제로 동작하는 인스턴스입니다. 파이썬에서 클래스는 class 키워드를 사용하여 정의합니다.

예를 들어, 학생의 정보를 나타내는 클래스를 정의하는 코드는 다음과 같습니다:

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

    def introduce(self):
        return f"안녕하세요, 저는 {self.name}이고 {self.age}살입니다."

위 코드는 학생 클래스에서 __init__() 메서드를 사용하여 이름과 나이를 초기화하며, introduce() 메서드를 통해 간단한 소개 메시지를 반환합니다. 이처럼 클래스는 객체의 설계도 역할을 합니다.

객체 생성과 사용

클래스를 정의한 후, 이를 기반으로 객체를 생성할 수 있습니다. 객체는 클래스를 인스턴스화하여 생성되며, 생성된 객체는 클래스에서 정의한 속성과 메서드를 사용할 수 있습니다.

예를 들어, 위에서 정의한 학생 클래스를 사용하여 객체를 생성하고 메서드를 호출하는 코드는 다음과 같습니다:

student1 = Student("홍길동", 20)
print(student1.introduce())

student2 = Student("김영희", 22)
print(student2.introduce())

이 코드는 두 명의 학생 객체를 생성하고, 각각의 소개 메시지를 출력합니다. 객체마다 독립적인 속성을 가지며, 동일한 클래스에서 생성된 객체라도 각기 다른 데이터를 보유할 수 있습니다.

클래스의 상속과 확장

객체지향 프로그래밍에서 상속은 기존 클래스의 기능을 확장하거나 재사용하는 데 유용합니다. 새로운 클래스(자식 클래스)는 기존 클래스(부모 클래스)를 상속받아 속성과 메서드를 물려받을 수 있습니다. 파이썬에서는 클래스 이름 옆에 괄호를 사용하여 상속 관계를 정의합니다.

예를 들어, 기본 학생 클래스에서 대학생 클래스를 상속받아 학과 정보를 추가하는 코드는 다음과 같습니다:

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

    def introduce(self):
        return f"안녕하세요, 저는 {self.name}, {self.age}살이고 전공은 {self.major}입니다."

위 코드는 기본 학생 클래스의 기능을 상속받아 대학생 클래스에 학과 정보를 추가하였습니다. super()를 사용하여 부모 클래스의 메서드를 호출하며, 이를 통해 코드를 재사용할 수 있습니다.

캡슐화와 접근 제한

캡슐화는 객체의 내부 상태를 외부에서 직접 접근하지 못하도록 보호하는 객체지향 프로그래밍의 중요한 개념입니다. 파이썬에서는 속성 이름 앞에 밑줄(_ 또는 __)을 붙여 접근 제한을 나타낼 수 있습니다.

예를 들어, 은행 계좌 클래스를 정의하여 잔액을 보호하는 코드는 다음과 같습니다:

class BankAccount:
    def __init__(self, balance):
        self.__balance = balance

    def deposit(self, amount):
        if amount > 0:
            self.__balance += amount
            return f"{amount}원이 입금되었습니다."

    def withdraw(self, amount):
        if 0 < amount <= self.__balance:
            self.__balance -= amount
            return f"{amount}원이 출금되었습니다."
        else:
            return "잔액이 부족합니다."

    def get_balance(self):
        return self.__balance

위 코드에서 __balance 속성은 외부에서 직접 접근할 수 없으며, deposit()withdraw() 메서드를 통해서만 변경할 수 있습니다. 이는 데이터의 무결성을 유지하는 데 매우 유용합니다.

항목 설명 비고
클래스 객체를 생성하기 위한 설계도 코드 재사용 가능
객체 클래스의 인스턴스 클래스의 속성과 메서드 사용
상속 기존 클래스의 기능 확장 코드 중복 감소
캡슐화 객체 내부 데이터 보호 데이터 무결성 유지

파이썬 클래스와 객체지향 프로그래밍 배우기 결론

파이썬 클래스와 객체지향 프로그래밍 배우기는 프로그래밍의 기본 원리를 이해하고, 더 구조적이고 유지보수하기 쉬운 코드를 작성하는 데 필수적입니다. 이 글에서는 클래스와 객체의 기본 개념부터, 상속, 캡슐화, 객체 생성까지 객체지향 프로그래밍의 핵심 내용을 다루었습니다. 이제 직접 코드를 작성하며 객체지향 프로그래밍의 강력함을 느껴 보세요. 연습과 실습을 통해 더 깊이 있는 이해를 얻을 수 있을 것입니다!