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

পাইথন ক্লাসে সমতা (equality) অপারেটর কীভাবে ব্যবহার করবেন?


যদি নিচের কোডের মতো সমতা অপারেটর ব্যবহার করি, তবে আউটপুট আসবে False।

class Integer:
    def __init__(self, number):
        self.number = number
n1 = Integer(1)
n2 = Integer(1)
print bool(n1 == n2)

আউটপুট

False

এটি হয় কারণ পাইথন ডিফল্টভাবে কম্পারিজন অপারেশন-এর জন্য অবজেক্ট আইডেন্টিফায়ার ব্যবহার করে।

এই সমস্যা সমাধান করতে হলে __eq__ ফাংশন ওভাররাইড করতে হবে।

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

পাইথন ২.এ, আমাদের __ne__ ফাংশনও ওভাররাইড করতে হয়। পাইথন ৩-এ এটি প্রয়োজন নেই। ডকুমেন্টেশন অনুযায়ী নিচের কথা সত্য।

ডিফল্টভাবে, __ne__() dele গেট করে __eq__()-র ফলাফল ইনভার্ট করে যদি সেটি NotImplemented না হয়। কম্পারিজন অপারেটরগুলোর মধ্যে অন্য কোনো ইমপ্লাইড রিলেশনশিপ নেই, উদাহরণস্বরূপ, (x<y or x==y)-এর সত্যতা x<=y ইমপ্লাই করে না।


  1. উইন্ডোজে পাইথন ব্যবহার করার পূর্ণ নির্দেশিকা

  2. Tkinter Python-এ Thread ব্যবহার করার পদ্ধতি

  3. পাইথনে FTP ব্যবহার করার পদ্ধতি

  4. পাইথনে ল্যাম্বডা ফাংশন ব্যবহারের পদ্ধতি