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

পাইথনে ডান্ডার বা ম্যাজিক মেথড (Dunder or Magic Methods)

ম্যাজিক মেথডগুলো যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এ কিছু খুব কুল ট্রিক করতে দেয়। এই মেথডগুলো দুই আন্ডারস্কোর (__) প্রিফিক্স এবং সাফিক্স হিসেবে ব্যবহার করা হয়ে চিহ্নিত হয়। উদাহরণস্বরূপ, ফাংশন ইন্টারসেপ্টর হিসেবে কাজ করে যা নির্দিষ্ট শর্ত পূরণ হলে অটোমেটিক্যালি কল হয়।

পাইথনে __repr__ একটি বিল্ট-ইন ফাংশন যা একটি অবজেক্টের "অফিশিয়াল" স্ট্রিং রিপ্রেজেন্টেশন কম্পিউট করতে ব্যবহৃত হয়, در حالی যে __str__ একটি বিল্ট-ইন ফাংশন যা একটি অবজেক্টের "অনঅফিশিয়াল" স্ট্রিং রিপ্রেজেন্টেশন কম্পিউট করে।

উদাহরণ কোড

class String:
    # অবজেক্ট ইনিশিয়ালাইজ করার ম্যাজিক মেথড
    def __init__(self, string):
        self.string = string

# Driver Code
if __name__ == '__main__':
    # অবজেক্ট তৈরি
    my_string = String('Python')
    # অবজেক্ট লোকেশন প্রিন্ট করুন
    print(my_string)

আউটপুট

<__main__.String object at 0x000000BF0D411908>

উদাহরণ কোড

class String:
    # অবজেক্ট ইনিশিয়ালাইজ করার ম্যাজিক মেথড
    def __init__(self, string):
        self.string = string
    # আমাদের স্ট্রিং অবজেক্ট প্রিন্ট করুন
    def __repr__(self):
        return 'Object: {}'.format(self.string)

# Driver Code
if __name__ == '__main__':
    # অবজেক্ট তৈরি
    my_string = String('Python')
    # অবজেক্ট লোকেশন প্রিন্ট করুন
    print(my_string)

আউটপুট

Object: Python

একটি স্ট্রিং এর সাথে যোগ করার চেষ্টা করছি।

উদাহরণ কোড

class String:
    # অবজেক্ট ইনিশিয়ালাইজ করার ম্যাজিক মেথড
    def __init__(self, string):
        self.string = string
    # আমাদের স্ট্রিং অবজেক্ট প্রিন্ট করুন
    def __repr__(self):
        return 'Object: {}'.format(self.string)

# Driver Code
if __name__ == '__main__':
    # অবজেক্ট তৈরি
    my_string = String('Python')
    # String অবজেক্ট এবং একটি স্ট্রিং কনক্যাটেনেট করুন
    print(my_string + ' Program')

আউটপুট

TypeError: unsupported operand type(s) for +: 'String' and 'str'

এখন String ক্লাসে __add__ মেথড যোগ করুন

উদাহরণ কোড

class String:
    # অবজেক্ট ইনিশিয়ালাইজ করার ম্যাজিক মেথড
    def __init__(self, string):
        self.string = string
    # আমাদের স্ট্রিং অবজেক্ট প্রিন্ট করুন
    def __repr__(self):
        return 'Object: {}'.format(self.string)
    def __add__(self, other):
        return self.string + other

# Driver Code
if __name__ == '__main__':
    # অবজেক্ট তৈরি
    my_string = String('Hello')
    # String অবজেক্ট এবং একটি স্ট্রিং কনক্যাটেনেট করুন
    print(my_string + ' Python')

আউটপুট

Hello Python
  1. পাইথনে স্ট্রিং ইভ্যালুয়েট করে অবজেক্ট রিটার্ন কীভাবে করবেন?

  2. স্ট্রিংকে পাইথন ক্লাস অবজেক্টে কীভাবে রূপান্তর করবেন?

  3. পাইথনে টাইমস্ট্যাম্প স্ট্রিংকে datetime অবজেক্টে কনভার্ট করবেন?

  4. পাইথনে ডেট স্ট্রিংকে ডেট অবজেক্টে কনভার্ট করবেন?