반응형
파이썬에서 클래스는 객체 지향 프로그래밍(OOP)을 구현하는 데 사용되는 기본적인 구조입니다. 클래스를 사용하면 데이터와 기능을 하나의 단위로 묶어 관리할 수 있습니다. 클래스는 객체의 청사진(blueprint) 역할을 하며, 객체는 클래스의 인스턴스(instance)입니다.
클래스 정의
클래스를 정의하려면 class 키워드를 사용합니다. 클래스 내부에는 속성(변수)과 메서드(함수)를 정의할 수 있습니다.
class Dog:
# 클래스 속성
species = "Canis familiaris"
# 초기화 메서드 (생성자)
def __init__(self, name, age):
self.name = name # 인스턴스 속성
self.age = age # 인스턴스 속성
# 메서드
def bark(self):
return f"{self.name}이(가) 짖습니다."
def get_age(self):
return f"{self.name}은(는) {self.age}살입니다."
객체 생성
클래스를 정의한 후에는 객체를 생성할 수 있습니다. 객체를 생성하려면 클래스 이름을 함수처럼 호출합니다.
my_dog = Dog("바둑이", 3)
print(my_dog.bark()) # 출력: 바둑이이(가) 짖습니다.
print(my_dog.get_age()) # 출력: 바둑이는(는) 3살입니다.
클래스 속성과 인스턴스 속성
- 클래스 속성: 모든 인스턴스가 공유하는 속성입니다. 예를 들어, species는 모든 Dog 객체가 공유하는 속성입니다.
- 인스턴스 속성: 각 인스턴스마다 고유한 속성입니다. 예를 들어, name과 age는 각 Dog 객체마다 다를 수 있습니다.
메서드
메서드는 클래스 내부에 정의된 함수입니다. 메서드는 첫 번째 매개변수로 항상 self를 받습니다. self는 현재 인스턴스를 가리킵니다.
class Dog:
# 초기화 메서드 (생성자)
def __init__(self, name, age):
self.name = name
self.age = age
# 메서드
def bark(self):
return f"{self.name}이(가) 짖습니다."
def get_age(self):
return f"{self.name}은(는) {self.age}살입니다."
상속
클래스는 다른 클래스에서 상속받을 수 있습니다. 상속을 통해 기존 클래스를 확장하거나 수정할 수 있습니다.
class Bulldog(Dog):
def __init__(self, name, age, weight):
super().__init__(name, age) # 부모 클래스의 초기화 메서드 호출
self.weight = weight
def get_weight(self):
return f"{self.name}은(는) {self.weight}kg입니다."
my_bulldog = Bulldog("뭉치", 5, 20)
print(my_bulldog.bark()) # 출력: 뭉치이(가) 짖습니다.
print(my_bulldog.get_age()) # 출력: 뭉치는(는) 5살입니다.
print(my_bulldog.get_weight()) # 출력: 뭉치는(는) 20kg입니다.
클래스의 추가 예제를 몇 가지 더 보여드릴게요.
예시 1: 학생 클래스
class Student:
def __init__(self, name, student_id, major):
self.name = name
self.student_id = student_id
self.major = major
def introduce(self):
return f"안녕하세요, 저는 {self.name}입니다. 학번은 {self.student_id}이고, 전공은 {self.major}입니다."
def change_major(self, new_major):
self.major = new_major
return f"{self.name}의 전공이 {self.major}(으)로 변경되었습니다."
# 객체 생성
student1 = Student("홍길동", "20250001", "컴퓨터공학")
print(student1.introduce()) # 출력: 안녕하세요, 저는 홍길동입니다. 학번은 20250001이고, 전공은 컴퓨터공학입니다.
print(student1.change_major("전자공학")) # 출력: 홍길동의 전공이 전자공학(으)로 변경되었습니다.
예시 2: 은행 계좌 클래스
class BankAccount:
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance
def deposit(self, amount):
self.balance += amount
return f"{amount}원이 입금되었습니다. 현재 잔액: {self.balance}원"
def withdraw(self, amount):
if amount > self.balance:
return "잔액이 부족합니다."
self.balance -= amount
return f"{amount}원이 출금되었습니다. 현재 잔액: {self.balance}원"
# 객체 생성
account = BankAccount("김철수", 10000)
print(account.deposit(5000)) # 출력: 5000원이 입금되었습니다. 현재 잔액: 15000원
print(account.withdraw(2000)) # 출력: 2000원이 출금되었습니다. 현재 잔액: 13000원
print(account.withdraw(15000)) # 출력: 잔액이 부족합니다.
예시 3: 도서관 시스템 클래스
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
self.is_checked_out = False
def check_out(self):
if self.is_checked_out:
return f"{self.title}은(는) 이미 대출 중입니다."
self.is_checked_out = True
return f"{self.title}이(가) 대출되었습니다."
def return_book(self):
if not self.is_checked_out:
return f"{self.title}은(는) 대출되지 않았습니다."
self.is_checked_out = False
return f"{self.title}이(가) 반납되었습니다."
# 객체 생성
book1 = Book("파이썬 프로그래밍", "홍길동")
print(book1.check_out()) # 출력: 파이썬 프로그래밍이(가) 대출되었습니다.
print(book1.check_out()) # 출력: 파이썬 프로그래밍은(는) 이미 대출 중입니다.
print(book1.return_book()) # 출력: 파이썬 프로그래밍이(가) 반납되었습니다.
print(book1.return_book()) # 출력: 파이썬 프로그래밍은(는) 대출되지 않았습니다.
이 예제들이 도움이 되었길 바랍니다!
반응형
'IT' 카테고리의 다른 글
파이썬 Object Class 정의 (0) | 2025.02.05 |
---|---|
파이썬 클래스 정의하고 인스턴스 생성 (0) | 2025.02.05 |
파이썬 반복문 - 리스트 컴프리헨션 (0) | 2025.02.05 |
파이썬 프로젝트 생성 (0) | 2025.02.04 |
Visual Studio Code (VS Code) 초보자를 위한 5가지 팁(설정) (0) | 2025.02.04 |