शुरू करेंमुफ़्त में शुरू करें

क्लास समानता जाँचना

पिछले अभ्यास में, आपने BankAccount क्लास परिभाषित की थी जिसमें तुलना के लिए number एट्रिब्यूट इस्तेमाल हुआ था। लेकिन अगर आप BankAccount ऑब्जेक्ट की तुलना किसी दूसरी क्लास के ऑब्जेक्ट से करें जिसमें number एट्रिब्यूट भी मौजूद हो, तो नतीजे अप्रत्याशित हो सकते हैं.

उदाहरण के लिए, इन दो classes पर विचार करें


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__() मेथड को पास किए गए ऑब्जेक्ट्स की class जाँच ली जाए ताकि तुलना सार्थक हो.

यह अभ्यास पाठ्यक्रम का हिस्सा है

Python में Object-Oriented Programming परिचय

पाठ्यक्रम देखें

अभ्यास निर्देश

  • BankAccount की परिभाषा को ऐसा संशोधित करें कि वह केवल तभी True लौटाए जब number एट्रिब्यूट समान हो और उसे पास किए गए दोनों ऑब्जेक्ट्स का type() भी समान हो.
  • जाँच करें कि acct और pn बराबर हैं या नहीं.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

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(____)
कोड संपादित करें और चलाएँ