পাইথনে a == b এক্সপ্রেশন দেখলে ইন্টারপ্রিটার প্রথমে a অবজেক্টের __eq__() মেথড খুঁজে। পাওয়া গেলে a.__eq__(b) কল করে।
যদি __eq__() NotImplemented রিটার্ন করে, তবে ইন্টারপ্রিটার রিভার্স ট্রাই করে: b.__eq__(a)।
ফ্লো চার্ট
a.__eq__(b)কল করুন- যদি রেজাল্ট
NotImplementedনা হয় → রিটার্ন করুন - অন্যথায়
b.__eq__(a)কল করুন - যদি সেটিও
NotImplementedহয় → ফলব্যাক (identity comparison)
উদাহরণ
class MyClass:
def __eq__(self, other):
print("MyClass.__eq__ called")
return NotImplemented
a = MyClass()
b = MyClass()
a == b # MyClass.__eq__ called, তারপর b.__eq__(a) কল হবে
মহত্ব: এটি পাইথনকে কমিউটেটিভ (commutative) অপারেশন সাপোর্ট করতে দেয় এবং সাবক্লাসে পলিমরফিজম সক্ষম করে।