본문 바로가기
실버를 위한 코딩/파이썬 연습

[파이썬 연습] 클래스와 객체

by forSilver 2024. 8. 9.
반응형

클래스와 객체

프로그래밍에서 클래스를 사용하여 사물처럼 코드를 작성하는 것은 객체지향 프로그래밍(OOP)의 핵심입니다. 클래스와 객체는 데이터를 구조화하고 기능을 묶어주는 강력한 도구입니다. 파이썬에서 클래스를 정의하고 객체를 생성하는 방법을 소개하겠습니다.

클래스 정의

클래스는 객체의 설계도입니다. 클래스를 정의하려면 class 키워드를 사용합니다.

class 클래스이름:
    def __init__(self, 매개변수1, 매개변수2, ...):
        self.속성1 = 매개변수1
        self.속성2 = 매개변수2

    def 메서드이름(self, 매개변수들):
        # 메서드 내용

객체 생성

클래스에서 객체를 생성하려면 클래스 이름을 함수처럼 호출합니다.

객체이름 = 클래스이름(인자1, 인자2, ...)

예제

간단한 클래스 예제

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

    def bark(self):
        print(f"{self.name}가 짖습니다.")

# 객체 생성
my_dog = Dog("바둑이", 3)
my_dog.bark()  # 바둑이가 짖습니다.

클래스와 객체의 사용 예제

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    def get_descriptive_name(self):
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name.title()

    def read_odometer(self):
        print(f"이 차의 주행거리는 {self.odometer_reading}마일입니다.")

    def update_odometer(self, mileage):
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("주행거리를 줄일 수 없습니다.")

# 객체 생성
my_car = Car('audi', 'a4', 2019)
print(my_car.get_descriptive_name())  # 2019 Audi A4
my_car.read_odometer()  # 이 차의 주행거리는 0마일입니다.
my_car.update_odometer(500)
my_car.read_odometer()  # 이 차의 주행거리는 500마일입니다.

실습 과제

  1. Person 클래스를 작성하세요. 이 클래스는 이름과 나이를 속성으로 가지고, introduce라는 메서드를 통해 자신의 이름과 나이를 출력하는 기능을 가집니다.
  2. BankAccount 클래스를 작성하세요. 이 클래스는 계좌번호와 잔액을 속성으로 가지고, deposit 메서드와 withdraw 메서드를 통해 입금과 출금을 처리하는 기능을 가집니다.
  3. Rectangle 클래스를 작성하세요. 이 클래스는 가로와 세로를 속성으로 가지고, area 메서드를 통해 사각형의 넓이를 계산하고 perimeter 메서드를 통해 둘레를 계산하는 기능을 가집니다.

실습 과제 답안

1. Person 클래스

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

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

# 테스트
person1 = Person("홍길동", 25)
person1.introduce()  # 안녕하세요, 저는 홍길동이고, 나이는 25살입니다.

2. BankAccount 클래스

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

    def deposit(self, amount):
        self.balance += amount
        print(f"{amount}원이 입금되었습니다. 현재 잔액은 {self.balance}원입니다.")

    def withdraw(self, amount):
        if amount > self.balance:
            print("잔액이 부족합니다.")
        else:
            self.balance -= amount
            print(f"{amount}원이 출금되었습니다. 현재 잔액은 {self.balance}원입니다.")

# 테스트
account = BankAccount("123-456-789", 1000)
account.deposit(500)  # 500원이 입금되었습니다. 현재 잔액은 1500원입니다.
account.withdraw(200) # 200원이 출금되었습니다. 현재 잔액은 1300원입니다.
account.withdraw(2000) # 잔액이 부족합니다.

3. Rectangle 클래스

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

    def perimeter(self):
        return 2 * (self.width + self.height)

# 테스트
rect = Rectangle(4, 7)
print(f"사각형의 넓이: {rect.area()}")       # 사각형의 넓이: 28
print(f"사각형의 둘레: {rect.perimeter()}")  # 사각형의 둘레: 22

Rectangle 클래스 적용 코딩 결과