যদি আমরা নিচের কোডের মতো ইক্যুইলিটি অপারেটর ব্যবহার করি, তাহলে আমরা আউটপুট হিসাবে মিথ্যা পাব
class Integer: def __init__(self, number): self.number = number n1 = Integer(1) n2 = Integer(1) print bool(n1 == n2)
আউটপুট
False
এর কারণ হল পাইথন ডিফল্টভাবে তুলনা ক্রিয়াকলাপের জন্য অবজেক্ট শনাক্তকারী ব্যবহার করে:
এই সমস্যাটি কাটিয়ে উঠতে আমাদের অবশ্যই __eq__function
ওভাররাইড করতে হবেclass Integer: def __init__(self, number): self.number = number def __eq__(self, other): if isinstance(self, other.__class__): return self.__dict__ == other.__dict__ return False n1 = Integer(1) n2 = Integer(1) print bool (n1 == n2) print bool (n1 != n2)
আউটপুট
True True
Python 2.x এর জন্য, আমাদেরকে __ne__function ওভারাইড করতে হবে। Python 3.x এর জন্য এটি প্রয়োজনীয় নয়। ডকুমেন্টেশন অনুসারে নিম্নলিখিতটি সত্য।
ডিফল্টরূপে, __ne__() __eq__() তে প্রতিনিধিত্ব করে এবং ফলাফলটিকে উল্টে দেয় যদি না এটি বাস্তবায়ন না হয়। তুলনা অপারেটরদের মধ্যে অন্য কোন অন্তর্নিহিত সম্পর্ক নেই, উদাহরণস্বরূপ, (x