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

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


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

একটি datetime অবজেক্ট তৈরি করি -

>>> import datetime >>> today = datetime.datetime.now() যখন আমি বিল্ট-ইন ফাংশন str() ব্যবহার করি today ডিসপ্লে করতে: >>> str(today) '2018-01-12 09:21:58.130922'

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

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

দেখলাম এটিও একটি স্ট্রিং রিটার্ন করেছে কিন্তু স্ট্রিংটি datetime অবজেক্টের "অফিসিয়াল" রিপ্রেজেন্টেশন যার মানে এই "অফিসিয়াল" স্ট্রিং রিপ্রেজেন্টেশন অবজেক্টটি রিকনস্ট্রাক্ট করতে পারে -

>>> 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. পাইথনে টাইমস্ট্যাম্প স্ট্রিংকে datetime অবজেক্টে কনভার্ট করবেন?

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

  3. পাইথনে স্ট্রিং থেকে তারিখ বের করা

  4. পাইথনে ডিলিমিটার স্ট্রিং দিয়ে স্ট্রিং বিভাজন করা