클래스와 인스턴스 예시
클래스(Class)와 인스턴스(Instance)의 관계를 보여주는 예시로 "은행 계좌"를 들어보겠습니다.
예시에서는 'BankAccount' 클래스를 정의하고, 여러 계좌 인스턴스를 생성하여 각 계좌의 독립적인 속성과 행동을 관리합니다.
-
클래스 선언 (BankAccount): 이 클래스는 은행 계좌를 나타냅니다. 각 계좌는 소유자(owner)와 잔액(balance)을 속성으로 갖고, 입금(deposit)과 출금(withdraw) 같은 행동을 메서드로 정의합니다.
-
초기화 메서드 (
__init__
): 계좌 인스턴스 생성 시 소유자 이름과 초기 잔액을 설정합니다. -
속성:
owner
(계좌 소유자),balance
(계좌 잔액). -
메서드:
deposit
(입금),withdraw
(출금),display_balance
(잔액 조회).
class BankAccount:
# 초기화 메서드
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance
# 입금 메서드
def deposit(self, amount):
self.balance += amount
print(f"{amount}가 입금되었습니다.")
# 출금 메서드
def withdraw(self, amount):
if self.balance >= amount:
self.balance -= amount
print(f"{amount}가 출금되었습니다.")
else:
print("잔액이 부족합니다.")
# 잔액 조회 메서드
def display_balance(self):
print(f"계좌 잔액: {self.balance}")
# 인스턴스 생성
account1 = BankAccount("코드프렌즈", 1000)
account2 = BankAccount("긱하우스", 2000)
# account1에 대한 입금, 출금, 잔액 조회
account1.deposit(500) # 500이 입금되었습니다.
account1.withdraw(200) # 200이 출금되었습니다.
account1.display_balance() # 계좌 잔액: 1300
# account2에 대한 입금, 출금, 잔액 조회
account2.deposit(1000) # 1000이 입금되었습니다.
account2.withdraw(500) # 500이 출금되었습니다.
account2.display_balance() # 계좌 잔액: 1500
이 코드에서 BankAccount
클래스는 계좌 객체를 생성하기 위한 틀로 사용됩니다.
각 계좌(account1
, account2
)는 BankAccount
클래스의 인스턴스로, 독립적인 속성(owner
, balance
)과 메서드(deposit
, withdraw
, display_balance
)를 갖습니다.
이렇게 클래스를 통해 생성된 인스턴스들은 각자의 데이터를 유지하며, 동일한 메서드를 사용하더라도 각 인스턴스에 따라 다른 결과를 나타냅니다.
참고로 self
는 파이썬에서 클래스의 메서드 내에서 현재 인스턴스를 참조하기 위해 사용되는 키워드입니다. 클래스 내에서 메서드를 정의할 때, 첫 번째 매개변수로 self를 사용하여 현재 인스턴스에 접근합니다. self의 주 요 용도는 다음과 같습니다.
-
인스턴스 속성 접근
: self를 사용하여 클래스 내의 메서드에서 해당 인스턴스의 속성에 접근하고 수정할 수 있습니다. 예를 들어, self.balance는 현재 인스턴스의 balance 속성을 가리킵니다. -
메서드 호출
: 인스턴스의 다른 메서드를 호출할 때 self를 사용합니다. 예를 들어, self.deposit(amount)는 같은 인스턴스 내의 deposit 메서드를 호출합니다.