কম্পিউটার

পাইথনে str() বনাম repr() ফাংশন ব্যাখ্যা করুন


অফিসিয়াল পাইথন ডকুমেন্টেশন বলছে __repr__ একটি অবজেক্টের "অফিসিয়াল" স্ট্রিং রিপ্রেজেন্টেশন খুঁজে পেতে ব্যবহার করা হয় এবং __str__ একটি অবজেক্টের "ইনফরমাল" স্ট্রিং রিপ্রেজেন্টেশন খুঁজে পেতে ব্যবহৃত হয়। প্রিন্ট স্টেটমেন্ট এবং str() বিল্ট-ইন ফাংশন অবজেক্টের স্ট্রিং রিপ্রেজেন্টেশন প্রদর্শন করতে __str__ ব্যবহার করে যখন repr() বিল্ট-ইন ফাংশন অবজেক্ট প্রদর্শন করতে __repr__ ব্যবহার করে। দুটি পদ্ধতি আসলে কী করে তা বোঝার জন্য একটি উদাহরণ নেওয়া যাক।

আসুন একটি ডেটটাইম অবজেক্ট তৈরি করি -

>>> import datetime
>>> today = datetime.datetime.now()
When I use the built-in function str() to display today:
>>> str(today)
'2018-01-12 09:21:58.130922'

আমরা দেখতে পাই যে তারিখটি একটি স্ট্রিং হিসাবে এমনভাবে প্রদর্শিত হয়েছে যাতে ব্যবহারকারী তারিখ এবং সময় বুঝতে পারে। এখন দেখা যাক কখন আমরা বিল্ট-ইন ফাংশন repr()−

ব্যবহার করি
>>> repr(today)
'datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)'

আমরা দেখতে পাচ্ছি যে এটি একটি স্ট্রিংও ফিরিয়ে দিয়েছে কিন্তু স্ট্রিংটি ছিল একটি ডেটটাইম অবজেক্টের "অফিসিয়াল" উপস্থাপনা যার মানে এই "অফিসিয়াল" স্ট্রিং উপস্থাপনা বস্তুটিকে পুনর্গঠন করতে পারে -

>>> eval('datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)')
datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)

eval() অন্তর্নির্মিত ফাংশন একটি স্ট্রিং গ্রহণ করে এবং এটি একটি datetime অবজেক্টে রূপান্তর করে৷

এইভাবে সাধারণভাবে প্রতিটি ক্লাসে আমাদের কোডের অবশ্যই একটি __repr__ থাকতে হবে এবং আপনি যদি মনে করেন যে অবজেক্টের একটি স্ট্রিং সংস্করণ থাকা উপযোগী হবে, যেমন datetime এর ক্ষেত্রে একটি __str__ ফাংশন তৈরি করুন।


  1. পাইথনে টাইমস্ট্যাম্প স্ট্রিংকে ডেটটাইম অবজেক্টে কীভাবে রূপান্তর করবেন?

  2. কিভাবে একটি Python তারিখ স্ট্রিং একটি তারিখ অবজেক্টে রূপান্তর করবেন?

  3. কিভাবে পাইথনে একটি স্ট্রিং থেকে তারিখ বের করতে হয়?

  4. পাইথনে একটি বিভাজক str দ্বারা স্ট্রিংকে কীভাবে বিভক্ত করবেন?