동등성 오버로딩
사용자 정의 클래스의 두 객체를 ==로 비교하면, Python은 기본적으로 객체가 가리키는 메모리만 비교하고 객체에 담긴 데이터는 비교하지 않아요. 이 동작을 바꾸려면, 비교할 두 객체를 인자로 받아 True 또는 False를 반환하는 특수 메서드를 클래스에 구현하면 됩니다. 이 메서드는 두 객체가 비교될 때 자동으로 호출돼요.
이전 장의 script.py에는 BankAccount 클래스가 제공되어 있어요. 이 클래스에는 balance와 number 두 속성과 withdraw() 메서드가 있어요. 잔액이 같은 두 은행 계좌가 반드시 같은 계좌는 아니지만, 은행 계좌에는 보통 계좌 번호가 있고, 계좌 번호가 같은 두 계좌는 같은 것으로 간주해야 해요.
이 연습은 강의의 일부입니다
Python 객체 지향 프로그래밍 입문
연습 안내
__init__()메서드가number라는 새 인자를 받도록 수정하고, 새로운number속성을 초기화하세요.- 두 객체의
number속성이 같은지 비교하는 메서드를 정의하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
class BankAccount:
# Modify to initialize a number attribute
def __init__(self, ____, balance=0):
self.balance = balance
____
def withdraw(self, amount):
self.balance -= amount
# Define __eq__ that returns True if the number attributes are equal
def ____(____, ____):
return ____.number == ____.____
# Create accounts and compare them
acct1 = BankAccount(123, 1000)
acct2 = BankAccount(123, 1000)
acct3 = BankAccount(456, 1000)
print(acct1 == acct2)
print(acct1 == acct3)