ম্যাজিক মেথড

ম্যাজিক মেথড #

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

পাইথনের অফিসিয়াল ডকে আমরা ম্যাজিক মেথড সম্পর্কে বিস্তারিত জানতে পারি। তবে এখানে আমরা গুরুত্বপূর্ণ কিছু ম্যাজিক মেথড সম্পর্কে জানব।

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

মেথডবর্ণনা
__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)// অপারেটরের কাজ করে।

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

>>> a = 5
>>> b = 9
>>> a.__add__(b)
14
>>> b.__sub__(a)
4
>>> a.__mul__(b)
45
>>> b.__mul__(a)
45
>>> b.__mod__(a)
4
>>> b.__pow__(a)
59049
>>> b.__floordiv__(a)
1
>>

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

মেথডবর্ণনা
__int__(self)ইন্টিজারে কনভার্ট করে।
__float__(self)ফ্লোটে কনভার্ট করে।
__str__(self)হিউম্যান-রিড্যাবল স্ট্রিংয়ে কনভার্ট করে।
__repr__(self)মেশিন-রিড্যাবল স্ট্রিংয়ে কনভার্ট করে।
ইপ কনভসন মিক মথডর একট ইমপিশন দ
>>> a = 5
>>> type(a)
<class 'int'>
>>> a = a.__float__()
>>> type(a)
<class 'float'>
>>> a = a.__str__()
>>> type(a)
<class 'str'>
>>> a = a.__repr__()
>>> type(a)
<class 'str'>

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

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

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

এদর কি ইমপিশন দক :
>>> a = 'Bangladesh'
>>> b = 'desh'
>>> a.__len__()
10
>>> a.__iter__()
<str_iterator object at 0x7f4c2c3c5a58>
>>> list(a.__iter__())
['B', 'a', 'n', 'g', 'l', 'a', 'd', 'e', 's', 'h']
>>> a.__contains__(b)
True 

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

মন্তব্য করুন