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

Equality को ओवरलोड करना

जब आप किसी custom class के दो objects की == से तुलना करते हैं, तो Python डिफ़ॉल्ट रूप से उन objects के डेटा नहीं, बल्कि उनकी मेमोरी लोकेशन की तुलना करता है. इस व्यवहार को ओवरराइड करने के लिए, क्लास में एक special मेथड लागू किया जा सकता है, जो तुलना किए जाने वाले दो objects को आर्ग्युमेंट्स के रूप में लेता है और True या False लौटाता है. जब दो objects की तुलना की जाएगी, यह मेथड अपने-आप कॉल हो जाएगा.

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

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

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

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

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

  • __init__() मेथड में बदलाव करके number नाम का नया आर्ग्युमेंट स्वीकार करें और नया number एट्रिब्यूट initialize करें.
  • ऐसा मेथड परिभाषित करें जो यह तुलना करे कि दो objects के 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)
    
कोड संपादित करें और चलाएँ