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

Equality ओवरलोड करना

जब आप किसी कस्टम क्लास के दो ऑब्जेक्ट्स की तुलना == से करते हैं, तो Python डिफ़ॉल्ट रूप से केवल ऑब्जेक्ट रेफ़रेंसेज़ की तुलना करता है, ऑब्जेक्ट्स में मौजूद डेटा की नहीं। इस व्यवहार को ओवरराइड करने के लिए, क्लास में विशेष __eq__() मेथड लागू किया जा सकता है, जो दो आर्ग्युमेंट्स लेता है — तुलना किए जाने वाले ऑब्जेक्ट्स — और True या False लौटाता है। यह मेथड तब स्वतः कॉल होता है जब दो ऑब्जेक्ट्स की तुलना की जाती है।

पिछले चैप्टर का BankAccount क्लास आपके लिए स्क्रिप्ट पेन में उपलब्ध है। इसमें एक एट्रिब्यूट balance है और एक withdraw() मेथड है। समान बैलेंस वाले दो बैंक अकाउंट ज़रूरी नहीं कि एक ही अकाउंट हों, लेकिन एक बैंक अकाउंट के पास आमतौर पर एक अकाउंट नंबर होता है, और जिन दो अकाउंट्स के अकाउंट नंबर समान हों, उन्हें समान माना जाना चाहिए।

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

Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

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

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

लाइन 1-7 के कोड को सिलेक्ट करके "Run code" बटन दबाने की कोशिश कीजिए। फिर कंसोल में कुछ BankAccount ऑब्जेक्ट्स बनाकर उनकी तुलना कीजिए.

  • __init__() मेथड को मॉडिफ़ाई करें ताकि वह एक नया पैरामीटर number ले और एक नया number एट्रिब्यूट इनिशियलाइज़ करे।
  • एक __eq__() मेथड डिफ़ाइन करें जो तब True लौटाए जब दो ऑब्जेक्ट्स के 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)
    
कोड संपादित करें और चलाएँ