क्लास समानता की जाँच
पिछले अभ्यास में, आपने BankAccount क्लास परिभाषित की थी, जिसमें तुलना के लिए number एट्रिब्यूट इस्तेमाल हुआ था। लेकिन अगर आप BankAccount ऑब्जेक्ट की तुलना किसी दूसरी क्लास के ऐसे ऑब्जेक्ट से करें जिसमें number एट्रिब्यूट भी हो, तो परिणाम अप्रत्याशित हो सकते हैं.
उदाहरण के लिए, दो क्लास मान लीजिए:
|
|
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)