시작하기무료로 시작하기

클래스 동등성 확인

이전 연습 문제에서, 비교에 사용할 number 속성이 있는 BankAccount 클래스를 정의했어요. 하지만 number 속성을 가진 다른 클래스의 객체와 BankAccount 객체를 비교하면 의도치 않은 결과가 나올 수 있습니다.

예를 들어, 다음 두 클래스를 보세요.


class Phone:
    def __init__(self, number):
        self.number = number

    def __eq__(self, other):
        return self.number == \
               other.number

pn = Phone(873555333)

class BankAccount:
    def __init__(self, number):
        self.number = number

    def __eq__(self, other):
        return self.number == \
               other.number

acct = BankAccount(873555333)

acct == pn을 실행하면 전화번호와 은행 계좌 번호를 비교하는데도 True가 반환됩니다.

비교가 의미 있게 동작하도록 하려면, __eq__() 메서드에 전달된 객체들의 클래스를 확인하는 것이 좋은 습관입니다.

이 연습은 강의의 일부입니다

Python 객체 지향 프로그래밍 입문

강의 보기

연습 안내

  • BankAccount 정의를 수정해, 전달된 두 객체의 type()이 같고 number 속성도 같을 때만 True를 반환하도록 하세요.
  • acctpn이 같은지 확인하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

class BankAccount:
  def __init__(self, number, balance=0):
    self.number, self.balance = number, balance
      
  def withdraw(self, amount):
    self.balance -= amount 

  # Modify to add a check for the class type
  def __eq__(self, other):
    return (self.number == other.number) ____

acct = BankAccount(873555333)
pn = Phone(873555333)

# Check if the two objects are equal
print(____)
코드 편집 및 실행