ऑपरेटर ओवरलोडिंग: ऑब्जेक्ट्स की तुलना

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

George Boorman

Curriculum Manager, DataCamp

ऑब्जेक्ट समानता

class Customer:
    def __init__(self, name, balance):
        self.name, self.balance = name, balance  

customer1 = Customer("Maryam Azar", 3000)
customer2 = Customer("Maryam Azar", 3000)

# समानता जाँचें customer1 == customer2
False
Python में Object-Oriented Programming परिचय

ऑब्जेक्ट समानता

class Customer:
    def __init__(self, name, balance, acc_id):
        self.name, self.balance = name, balance
        self.acc_id = acc_id    

customer1 = Customer("Maryam Azar", 3000, 123)
customer2 = Customer("Maryam Azar", 3000, 123)

customer1 == customer2
False
Python में Object-Oriented Programming परिचय

वैरिएबल रेफरेंस होते हैं

customer_one = Customer("Maryam Azar", 3000, 123)
customer_two = Customer("Maryam Azar", 3000, 123)

print(customer_one)
<__main__.Customer at 0x1f8598e2e48>
print(customer_two)
<__main__.Customer at 0x1f8598e2240>
  • print() आउटपुट उस मेमोरी ब्लॉक को दिखाता है जिससे वैरिएबल जुड़ा है
  • == डेटा नहीं, रेफरेंसेज़ की तुलना करता है
Python में Object-Oriented Programming परिचय

कस्टम तुलना

# एक ही डेटा वाली दो अलग सूचियाँ
list_one = [1,2,3]
list_two = [1,2,3]

list_one == list_two
True
Python में Object-Oriented Programming परिचय

`__eq__()` मेथड

  • __eq__() तब कॉल होता है जब किसी क्लास के 2 ऑब्जेक्ट्स को == से तुलना करते हैं
  • 2 आर्ग्युमेंट लेता है, self और other - तुलना वाले ऑब्जेक्ट्स
  • एक Boolean लौटाता है
Python में Object-Oriented Programming परिचय

`__eq__()` मेथड

class Customer:
    def __init__(self, acc_id, name):
        self.acc_id, self.name = acc_id, name

# == उपयोग होने पर कॉल होगा def __eq__(self, other):
# प्रिंटआउट print("__eq__() is called") # True लौटाता है अगर सभी ऐट्रिब्यूट्स मिलते हैं return (self.acc_id == other.acc_id) and (self.name == other.name)
Python में Object-Oriented Programming परिचय

ऑब्जेक्ट्स की तुलना

# दो समान ऑब्जेक्ट्स
customer1 = Customer(123, "Maryam Azar")
customer2 = Customer(123, "Maryam Azar")

customer1 == customer2
__eq__() is called
True
# दो असमान ऑब्जेक्ट्स - अलग ids
customer1 = Customer(123, "Maryam Azar")
customer2 = Customer(456, "Maryam Azar")

customer1 == customer2
__eq__() is called
False
Python में Object-Oriented Programming परिचय

टाइप जाँचना

  • अगर अलग क्लास के दो ऑब्जेक्ट्स में वही ऐट्रिब्यूट्स और वैल्यूज़ हों तो?
    • Python उन्हें बराबर मानेगा
class Customer:
    def __init__(self, acc_id, name):
        self.acc_id, self.name = idacc_id name

    def __eq__(self, other):
        # True लौटाता है अगर ऑब्जेक्ट्स में वही ऐट्रिब्यूट्स हों
        # और वही टाइप हो
        return (self.acc_id == other.acc_id) and (self.name == other.name)\
            and (type(self) == type(other))
Python में Object-Oriented Programming परिचय

अन्य तुलना ऑपरेटर्स

ऑपरेटर मेथड
== __eq__()
!= __ne__()
>= __ge__()
<= __le__()
> __gt__()
< __lt__()
  • क्लास के अंदर परिभाषित करके कस्टमाइज़ करें
Python में Object-Oriented Programming परिचय

अभ्यास करते हैं!

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

Preparing Video For Download...