1. 학습
  2. /
  3. 강의
  4. /
  5. Python의 객체 지향 프로그래밍

Connected

연습 문제

클래스 동일성 확인하기

이전 연습 문제에서 비교에 사용되는 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__() 메서드에 전달된 객체의 클래스를 확인하는 것이 좋습니다.

지침

100 XP

Phone과 BankAccount 클래스가 모두 정의되어 있습니다. 먼저 "코드 실행" 버튼으로 코드를 그대로 실행해 보고, 출력 결과를 확인해 보세요.

  • BankAccount의 정의를 수정해, number 속성이 같고 두 객체의 type()이 동일할 때만 True를 반환하도록 하세요.

다시 코드를 실행하고 출력 결과를 확인해 보세요.