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

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

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

उदाहरण के लिए, दो क्लास मान लीजिए:


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 में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

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

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

Phone और BankAccount दोनों क्लास परिभाषित हैं। "Run code" बटन का इस्तेमाल करके कोड जैसे-का-तैसा चलाइए और आउटपुट देखें.

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

कोड चलाइए और आउटपुट फिर से जाँचिए.

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

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

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 type()
    def __eq__(self, other):
        return (self.number == other.number)

acct = BankAccount(873555333)
pn = Phone(873555333)
print(acct == pn)
कोड संपादित करें और चलाएँ