인스턴스 메서드
Source: Dev.to
Instance methods
클래스에 대해 배운 후, 메서드에 대해 배워봅시다.
class Time:
def __init__(self):
self.hours = 0
self.minutes = 0
def print_time(self):
print(f'Hours: {self.hours}', end=' ')
print(f'Minutes: {self.minutes}')
time1 = Time()
time1.hours = 3
time1.minutes = 35
time1.print_time()
위 예시에서 print_time은 인스턴스 메서드입니다—클래스 내부에 정의된 함수로, 특정 인스턴스에 대해 동작합니다.
__init__ 메서드는 새로운 객체가 생성될 때 자동으로 실행되는 특수한 인스턴스 메서드로, 객체의 속성을 초기화합니다.
초보자들이 흔히 저지르는 실수는 메서드의 첫 번째 매개변수로 self를 빼먹는 것입니다. 파이썬은 인스턴스 참조를 첫 번째 인수로 자동으로 전달하기 때문에 self를 빼먹으면 “인수가 너무 많다”는 오류가 발생합니다.
흔한 오류: self를 잊어버림
class Employee:
def __init__(self):
self.wage = 0
self.hours_worked = 0
def calculate_pay(self): # `self`가 포함되어야 함
return self.wage * self.hours_worked
alice = Employee()
alice.wage = 6.25
alice.hours_worked = 15
print(f'Alice earned {alice.calculate_pay():.2f}')
self 매개변수를 생략하면(예: def calculate_pay():), alice.calculate_pay()를 호출할 때 파이썬이 인스턴스를 자동으로 전달하려고 하면서 인수 불일치가 발생해 오류가 발생합니다. self를 추가하면 문제가 해결됩니다.