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)