본문으로 건너뛰기

클래스와 인스턴스의 관계

클래스와 인스턴스 예시

클래스(Class)와 인스턴스(Instance)의 관계를 보여주는 예시로 "은행 계좌"를 들어보겠습니다.

예시에서는 'BankAccount' 클래스를 정의하고, 여러 계좌 인스턴스를 생성하여 각 계좌의 독립적인 속성과 행동을 관리합니다.

  1. 클래스 선언 (BankAccount): 이 클래스는 은행 계좌를 나타냅니다. 각 계좌는 소유자(owner)와 잔액(balance)을 속성으로 갖고, 입금(deposit)과 출금(withdraw) 같은 행동을 메서드로 정의합니다.

  2. 초기화 메서드 (__init__): 계좌 인스턴스 생성 시 소유자 이름과 초기 잔액을 설정합니다.

  3. 속성: owner (계좌 소유자), balance (계좌 잔액).

  4. 메서드: 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 메서드를 호출합니다.