কম্পিউটার টিউটোরিয়াল

পাইথনে অপারেটর বাইনডিং (Operator Binding) কী

পাইথনে a == b এক্সপ্রেশন দেখলে ইন্টারপ্রিটার প্রথমে a অবজেক্টের __eq__() মেথড খুঁজে। পাওয়া গেলে a.__eq__(b) কল করে।

যদি __eq__() NotImplemented রিটার্ন করে, তবে ইন্টারপ্রিটার রিভার্স ট্রাই করে: b.__eq__(a)।

ফ্লো চার্ট

  1. a.__eq__(b) কল করুন
  2. যদি রেজাল্ট NotImplemented না হয় → রিটার্ন করুন
  3. অন্যথায় b.__eq__(a) কল করুন
  4. যদি সেটিও 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) অপারেশন সাপোর্ট করতে দেয় এবং সাবক্লাসে পলিমরফিজম সক্ষম করে।

  1. পাইথনে ^ অপারেটর এর ফাংশন কী?

  2. পাইথনে is not অপারেটর কী?

  3. পাইথনে not in অপারেটর কী?

  4. পাইথনে ডট অপারেটর কী?