পাইথনে, __repr__ এবং __str__ এর মধ্যে পার্থক্য কী?


উত্তর 1:

সংক্ষেপে আমি ব্যাখ্যা করার চেষ্টা করব। _str_ এবং _repr_ উভয়ই সামান্য পার্থক্য সহ স্ট্রিং উপস্থাপনার জন্য। Repr (অবজেক্ট টেকনিক্যাল ডিটেলস) দিয়ে আপনি পাইথন এক্সপ্রেশনটি মূল্যায়নের জন্য পাইথন ইভাল () ফাংশনটিতে কল করতে পারেন তবে আপনি পারবেন না।

>>> repr (4) == স্ট্রিং (4)
সত্য
>>> repr ('সাধারণ হাইন ...') == স্ট্রিং ('সরল হ্যায় ...')
মিথ্যা

এই আচরণটি বোঝার জন্য এখন আউটপুটটি দেখতে পৃথককে করুন

>>> s = 'সরল হ্যায় ...'
>>> repr (গুলি)
"'সরল হৈ ...'"
>>> আরআর (গুলি)
'সরল হ্যায় ...'
>>> আরআর (4)
'4'
>>> পুনরায় (4)
'4'

_রেপ্র_ এবং _ র__ বুঝতে বুঝতে পাইথন ইভাল ফাংশনটি ব্যবহার করা হচ্ছে

>>> বিভাজন (পুনরায় ('সহজ হাইন ...'))
'সরল হ্যায় ...'
>>> ইভাল (স্ট্রিং ('সরল হাইন ...'))
ট্রেসব্যাক (সবচেয়ে সাম্প্রতিকতম কল সর্বশেষ):
  "মডেল> এ"  ", লাইন 1 ফাইল করুন
  "মডেল> এ"  ", লাইন 1 ফাইল করুন
নামের ত্রুটি: নাম 'সাধারণ হাইন ...' সংজ্ঞায়িত হয়নি

এখন কোথায় এই বৈশিষ্ট্যটি ব্যবহার করবেন। পাইথনে _repr_ অবজেক্টের তথ্য দেওয়ার জন্য ব্যবহৃত হয় এবং _str_ মুদ্রণ বা প্রদর্শনের উদ্দেশ্যে ব্যবহৃত হয়।

  • অবজেক্ট সম্পর্কে আরও প্রযুক্তিগত বিশদ দেওয়ার জন্য আপনি প্রয়োগ করেন এমন প্রতিটি শ্রেণীর জন্য __repr__ বাস্তবায়নের চেষ্টা করুন classes শ্রেণীর জন্য __str__ প্রয়োগ করার চেষ্টা করুন যা আপনার মনে হয় পাঠযোগ্যতা আরও গুরুত্বপূর্ণ

নেটে এই উদাহরণটি পেয়েছি

>>> তারিখের সময় আমদানির তারিখের সময় থেকে
>>> এখন = তারিখের সময়। এখন ()
>>> পুনরায় (এখন)
'ডেটটাইম.ডেটটাইম (2013, 2, 5, 4, 43, 11, 673075)'
>>> আরআর (এখন)
'2013-02-05 04: 43: 11.673075'

আশা করি আপনি এটি বুঝতে পেরেছেন।


উত্তর 2:

__Repr__- এর জন্য, "যদি কিছুটা সম্ভব হয় তবে এটি একটি বৈধ পাইথন এক্সপ্রেশনটির মতো হওয়া উচিত যা একই মানের (উপযুক্ত পরিবেশ প্রদত্ত) দিয়ে কোনও বস্তু পুনরায় তৈরি করতে ব্যবহার করা যেতে পারে If যদি এটি সম্ভব না হয় তবে ফর্মের একটি স্ট্রিং <.. । কিছু দরকারী বিবরণ ...> ফিরিয়ে দেওয়া উচিত ""

সুতরাং, দৃ concrete়ভাবে, __str__ স্ট্রিং "xyzzy" এর স্ট্রিংটি হবে: xyzzy

তবে স্ট্রিংয়ের জন্য __repr__ স্ট্রিংটি হবে: 'xyzzy'


উত্তর 3:

__Repr__- এর জন্য, "যদি কিছুটা সম্ভব হয় তবে এটি একটি বৈধ পাইথন এক্সপ্রেশনটির মতো হওয়া উচিত যা একই মানের (উপযুক্ত পরিবেশ প্রদত্ত) দিয়ে কোনও বস্তু পুনরায় তৈরি করতে ব্যবহার করা যেতে পারে If যদি এটি সম্ভব না হয় তবে ফর্মের একটি স্ট্রিং <.. । কিছু দরকারী বিবরণ ...> ফিরিয়ে দেওয়া উচিত ""

সুতরাং, দৃ concrete়ভাবে, __str__ স্ট্রিং "xyzzy" এর স্ট্রিংটি হবে: xyzzy

তবে স্ট্রিংয়ের জন্য __repr__ স্ট্রিংটি হবে: 'xyzzy'