ম্যাজিক মেথড

ক্লাস নিয়ে পড়াশুনা করতে গিয়ে আমরা __init__(), __iter__(), __next__() এরকম কিছু মেথড দেখেছি। এই তিনটা বাদেও পাইথনে ডাবল আন্ডারস্কোর ঘেরা আরো অনেক স্পেশাল মেথড রয়েছে। এদেরকে ম্যাজিক মেথড বলে। কারণ এরা ক্লাসের কাজে-কর্মে স্রেফ ম্যাজিক নিয়ে আসে। আগে-পিছে দুইটা আন্ডারস্কোর থাকলে তাকে ডান্ডার (dunder) বলে। আর পড়ার সময় আন্ডারস্কোর আন্ডারস্কোর ইনিট আন্ডারস্কোর আন্ডারস্কোর এভাবে না বলে 'ডান্ডার ইনিট' এভাবে পড়া হয়।

পাইথনের অফিসিয়াল ডকে (https://docs.python.org/3/reference/datamodel.html) আমরা ম্যাজিক মেথড সম্পর্কে বিস্তারিত জানতে পারি। তবে এখানে আমরা গুরুত্বপূর্ণ কিছু ম্যাজিক মেথড সম্পর্কে জানব।

কন্সট্রাকশন ও ডেস্ট্রাকশন ম্যাজিক মেথড

মেথড বর্ণনা
__init__(self, [...]) ক্লাস কন্সট্রাক্ট করে।
__del__(self) ক্লাস ডেস্ট্রাক্ট করে।

এই দুইটাকে ইমপ্লিমেন্ট করে একটা উদাহরণ দেখা যাক।

class MyClass:
    """A custom class for nothing"""

    def __init__(self, var):
        self.var = var

    def __del__(self):
        del self.var

কমপারিজন ম্যাজিক মেথড

মেথড বর্ণনা
__cmp__(self, other) সমস্ত কমপারিজন অপারেটরের বাপ।
__eq__(self, other) == অপারেটরের কাজ করে।
__ne__(self, other) != অপারেটরের কাজ করে।
__lt__(self, other) < অপারেটরের কাজ করে।
__gt__(self, other) > অপারেটরের কাজ করে।
__le__(self, other) <= অপারেটরের কাজ করে।
__ge__(self, other) >= অপারেটরের কাজ করে।

কমপারিজন ম্যাজিক মেথডের একটা ইমপ্লিমেন্টেশন দেখা যাক।

class MyClass:
    """A custom class for nothing"""

    def __init__(self, var):
        self.var = var

    def __del__(self):
        del self.var

    def __gt__(self, other):
        return len(other) > len(self.var)

    def __lt__(self, other):
        return len(other) < len(self.var)

    def __ge__(self, other):
        return len(other) >= len(self.var)

    def __le__(self, other):
        return len(other) <= len(self.var)

অ্যারিথমেটিক ম্যাজিক মেথড

মেথড বর্ণনা
__add__(self, other) + অপারেটরের কাজ করে।
__sub__(self, other) - অপারেটরের কাজ করে।
__mul__(self, other) * অপারেটরের কাজ করে।
__div__(self, other) / অপারেটরের কাজ করে।
__mod__(self, other) % অপারেটরের কাজ করে।
__pow__ ** অপারেটরের কাজ করে।
__floordiv__(self, other) // অপারেটরের কাজ করে।

টাইপ কনভার্সন ম্যাজিক মেথড

মেথড বর্ণনা
__int__(self) ইন্টিজারে কনভার্ট করে।
__float__(self) ফ্লোটে কনভার্ট করে।
__str__(self) হিউম্যান-রিড্যাবল স্ট্রিংয়ে কনভার্ট করে।
__repr__(self) মেশিন-রিড্যাবল স্ট্রিংয়ে কনভার্ট করে।

আরো কিছু ম্যাজিক মেথড

মেথড বর্ণনা
__len__(self) কন্টেইনারের লেংথ রিটার্ন করে।
__iter__(self) কন্টেইনারের জন্য ইটারেটর রিটার্ন করে।
__contains__(self, item) আইটেমটি কন্টেইনারের মেম্বার কিনা টেস্ট করে।

এদের কিছু ইমপ্লিমেন্টেশন দেখা যাক।

class MyClass:
    """A custom class for nothing"""

    def __init__(self, var):
        self.var = var

    def __del__(self):
        del self.var

    def __len__(self):
        return len(self.var)

    def __iter__(self):
        return iter(self.var)

সামনের চাপ্টারগুলোতে আমরা হয়ত এদের আরো কিছু ইমপ্লিমেন্টেশন দেখব। তার আগ পর্যন্ত ম্যাজিক মেথডের ম্যাজিক শো এখানেই স্থগিত।

সহজ ভাষায় পাইথন ৩

বইটি পড়ার সময় প্রতিটি টপিক ধারাবাহিকভাবে বুঝে বুঝে পড়তে হবে এবং হাতে-কলমে অনুশীলন করতে হবে। কোন অংশ বুঝতে সমস্যা হলে ফেসবুক গ্রুপ পাইথন বাংলাদেশে সমস্যাটি পোস্ট করতে পারেন। এখান থেকে অতি দ্রুত সাহায্য-সহযোগীতা পাবেন আপনি।

results matching ""

    No results matching ""