클래스(Class)는 객체 지향 프로그래밍(OOP)의 기본 개념 중 하나로, 객체를 생성하기 위한 설계도이다. 객체는 클래스의 인스턴스(instance)라고도 한다. 클래스는 데이터 속성(attribute)과 메서드(method)를 포함할 수 있으며, 이를 통해 객체의 상태(state)와 행동(behavior)을 정의한다.
클래스 정의하기
클래스를 정의하려면 class
키워드를 사용한다. 클래스의 이름은 일반적으로 대문자로 시작한다.
class Person:
pass
위 예제는 Person
이라는 빈 클래스를 정의한 것이다. pass
키워드는 아무것도 하지 않는 문장을 의미한다.
속성과 메서드 추가하기
클래스에 속성과 메서드를 추가하여 객체의 상태와 행동을 정의할 수 있다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"안녕하세요, 제 이름은 {self.name}이고, 저는 {self.age}살입니다."
__init__
메서드는 생성자(constructor)로, 객체가 생성될 때 호출된다. 여기서self
는 생성된 객체를 참조한다.self.name
과self.age
는 인스턴스 속성(instance attribute)이다.greet
메서드는 인사말을 반환한다.
객체 생성하기
클래스로부터 객체를 생성하려면 클래스 이름을 함수처럼 호출하면 된다.
person1 = Person("홍길동", 30)
print(person1.greet())
위 코드는 홍길동
이라는 이름과 30
살의 나이를 가진 Person
객체를 생성하고, greet
메서드를 호출하여 인사말을 출력한다.
속성 접근 및 수정
객체의 속성에 접근하거나 속성을 수정할 수 있다.
print(person1.name) # 홍길동 출력
person1.age = 31
print(person1.greet()) # "안녕하세요, 제 이름은 홍길동이고, 저는 31살입니다." 출력
예제: 은행 계좌 클래스
다음은 은행 계좌를 모델링한 클래스 예제이다.
class BankAccount:
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance
def deposit(self, amount):
if amount > 0:
self.balance += amount
return f"{amount}원이 입금되었습니다. 현재 잔액: {self.balance}원"
return "입금할 금액이 유효하지 않습니다."
def withdraw(self, amount):
if 0 < amount <= self.balance:
self.balance -= amount
return f"{amount}원이 출금되었습니다. 현재 잔액: {self.balance}원"
return "출금할 금액이 유효하지 않거나 잔액이 부족합니다."
# 객체 생성 및 메서드 호출
account = BankAccount("김철수", 1000)
print(account.deposit(500)) # 500원이 입금되었습니다. 현재 잔액: 1500원 출력
print(account.withdraw(200)) # 200원이 출금되었습니다. 현재 잔액: 1300원 출력
print(account.withdraw(2000)) # 출금할 금액이 유효하지 않거나 잔액이 부족합니다. 출력
위 예제에서 BankAccount
클래스는 은행 계좌의 소유자와 잔액을 속성으로 가지며, 입금과 출금을 처리하는 메서드를 제공한다.