본문 바로가기
파이썬

파이썬 인스턴스 메소드 이해하기

by python pro 2023. 1. 27.
반응형

"Python 인스턴스메소드"는 클래스에 의해 생성된 인스턴스에 대해 정의된 메소드로, 인스턴스마다 고유한 상태를 가지며 인스턴스내부의 데이터를 조작하는데 사용됩니다. 인스턴스메소드는 첫번째 인자로 self를 받습니다.

 

아래는 인스턴스메소드를 정의하는 예시입니다.

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

    def introduce(self):
        print(f'Hello, my name is {self.name}')

p = Person('John')
p.introduce() #Hello, my name is John

인스턴스메소드를 정의할 때는 self를 첫번째 인자로 받아야 합니다. 위 코드는 Person 클래스를 정의하며, 이를 이용해 인스턴스를 생성하고 introduce 메소드를 이용해 인스턴스의 name을 출력합니다.

 

아래는 인스턴스메소드를 사용하지 않는 잘못된 코드 예시입니다.

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

    def introduce():
        print(f'Hello, my name is {self.name}')

p = Person('John')
p.introduce() #AttributeError: 'Person' object has no attribute 'name'

위 코드는 인스턴스메소드를 정의할 때 self를 첫번째 인자로 받지 않아 잘못된 코드입니다. 인스턴스메소드를 정의할 때 self를 첫번째 인자로 받아야 하며, 이를 생략하면 인스턴스내부의 데이터에 접근할 수 없어 오류가 발생합니다.

 

인스턴스메소드를 사용하면 인스턴스마다 고유한 상태를 가지며 인스턴스내부의 데이터를 조작할 수 있어 인스턴스 간에 데이터를 공유하지 않고 관리할 수 있어 유용합니다.

 

정리하면,

  • 인스턴스와 관련된 기능을 구현할때 사용
  • self를 인자로 받는다는 점을 기억
  • 인스턴스마다 고유한 상태를 가지며 인스턴스내부의 데이터를 조작 가능

인스턴스메소드를 이용해 인스턴스마다 고유한 상태를 가지며 인스턴스턴스 내부의 데이터를 조작하는 실제 업무 예제를 작성해보겠습니다.

 

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

    def check_balance(self):
        return self.balance

    def deposit(self, amount):
        self.balance += amount

    def withdraw(self, amount):
        if self.balance >= amount:
            self.balance -= amount
            return amount
        else:
            return 'Insufficient balance'

# create an instance of BankAccount
account = BankAccount(12345678, 1000)
print(account.check_balance()) #1000
account.deposit(500)
print(account.check_balance()) #1500
print(account.withdraw(2000)) #Insufficient balance
print(account.check_balance()) #1500

위 코드는 BankAccount 클래스를 정의하며, 이를 이용해 계좌번호와 잔액을 인자로 받는 인스턴스를 생성하고, check_balance, deposit, withdraw 메소드를 이용해 계좌의 잔액을 조회하고 입금, 출금 기능을 구현합니다. 이 코드를 통해 인스턴스메소드를 이용해 인스턴스마다 고유한 상태를 가지며 인스턴스내부의 데이터를 조작하는 실제 업무 예제를 이해할 수 있을 것입니다. 이 예제에서는 인스턴스마다 고유한 account_number와 balance를 가지며, check_balance, deposit, withdraw 메소드를 이용해 인스턴스의 잔액을 조회하고 입금, 출금 기능을 구현하였습니다.

 

정리하면,

  • 인스턴스와 관련된 기능을 구현할때 사용
  • self를 인자로 받는다는 점을 기억
  • 인스턴스마다 고유한 상태를 가지며 인스턴스내부의 데이터를 조작 가능
  • 인스턴스들이 각각 상태를 가지며, 공유하지 않음

인스턴스메소드를 이용해 객체마다 고유한 상태를 가지며 인스턴스내부의 데이터를 조작할 수 있어 실제 업무에서 매우 유용하게 사용될 수 있습니다.

 

인스턴스메소드를 사용할 때는 첫번째 인자로 self를 받는 것을 잊지 마시고, self를 사용해 인스턴스내부의 데이터에 접근하는 것을 확인하시면 됩니다.

 

반응형

댓글