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