<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های Mohammadreza</title><link>https://virgool.ir/feed/@mohammadrezanazif</link><description>توسعه دهنده پایتون</description><language>fa</language><pubDate>2026-11-12 12:37:41</pubDate><image><url>https://files.virgool.ir/upload/users/161897/avatar/YmH2Ao.jpg</url><title>Mohammadreza</title><link>https://virgool.ir/@mohammadrezanazif</link></image><item><title>بررسی تفاوت بین __str__ و __repr__ در پایتون</title><link>https://virgool.ir/@mohammadrezanazif/بررسی-تفاوت-بین-str-و-repr-در-پایتون-reuunexpbj8r</link><description>سلام و دروداولین پست من پستی تقریبا تخصصی هست امیدوارم لذت ببریدقبل از اینکه وارد بررسی تفاوت بین این دو متد بشیم باید در مورد dunder method ها کمی اطلاعات داشته باشیماگر بخواهییم خیلی کلی بگیم dunder method ها یا magic method ها متد هایی هستند که دسترسی بیشتری به ما برای پیاده سازی یکسری عملیات های خاص رو میدن که به همین دلیل یک اسم دیگر این متد هاهم special method هستراه شناسایی این متد ها 2 underscore که در قبل و بعد از اسم متد ها میباشد هست در واقع اسم dunder method مخفف double underscore method هست حال بریم سراغ اصل مطلب , یکی از مهم ترین عملیات های برنامه های کامپیوتری نمایش اطلاعات هست که در ساده ترین برنامه هم اون رو میبینم و عملا ساده ترین برنامه در زبان های برنامه نویسی برنامه Hello World بوده , که ما با استفاده از یک دستور متن Hello World رو نمایش میدیمحال در پایتون , متد های __str__ و __repr__ برای نمایش اطلاعات مربوط به شی ساخته شده از کلاس ها هستن , حال دقیقا منظور چیه ؟اگر دقت کنید , به عنوان مثال شما یک کلاسی داشتید و از اون کلاس شی جدید ساختید و در یک متغیر نگه داری کردید , حال اگر اون متغیر رو به تابع print پاس بدیم برای نمایش یکسری اطلاعات رو به ما نمایش میده که ممکن هست آدرس اون شی در حافظه رم باشه یا یکسری اطلاعات کاملا خوانا و شفاف , در واقع شما با صدا زدن تابع print و چاپ متغیر مورد نظر در حال صدا زدن متد __str__ اون کلاس هستیدتفاوت __repr__ و __str__ :هر دو متد برای نمایش اطلاعات هستن اما اهدافشون با هم متفاوت هست متد __str__ :  خروجی این متد string هست و اطلاعاتی که نمایش میده میتونه هر چیزی باشه اما طبق ارفی که وجود داره از این متد برای نمایش اطلاعاتی کلی و سربسته و خیلی شفاف استفاده میشه که کاربر هدف این متد , کاربران عادی نرم افزار ما هستنمتد __repr__ : خروجی این متد طبق متد بالا string هست و این متد هم هر اطلاعاتی مربوط به شی ساخته شده از کلاس رو به ما برمیگردونه اما این اطلاعات طبق موردی که در مراجع معتبر هست , اطلاعات جزیی تر از کلاس , شی و موارد دیگه هست که کاربر هدف این متد برنامه نویس و توسعه دهنده اون برنامه هست که این اطلاعات جزیی تر مناسب توسعه دهنده برنامه هست تا کاربر عادی و میتونه دید بهتری از کلاس داشته باشهتفات کلی این دو متد به این صورت هست , پس در موقع پیاده سازی باید متوجه این قضیه بود که هر کدوم از این متد ها برای چه هدفی پیاده سازی میشنما در هنگام فراخوانی تابع و print و پاس دادن مقدار به این تابع در واقع در حال صدا زدن متد __str__ هستیم یا به عبارت زیر :بررسی تفاوت بین repr , strحال برای نمایش اطلاعات خروجی مربوط به متد __repr__ از تابع repr استفاده میکنیم و شی ساخته شده رو به تابع پاس میدیم که این تابع به خودی خود و اطلاعات مربوط به __repr__ رو دریافت میکنه , پس نیازه در تابع print قرار بگیره تا اطلاعات نمایش داده بشنبررسی تفاوت بین repr , strما میتونیم از متد های __repr__ و __str__ به صورت بالا هم استفاده کنیماگر در مدل های جنگو دقت کرده باشید برای نمایش اطلاعات هر رکورد در پنل مدیریت ما متد __str__ رو پیاده سازی میکنیمبخواهیم یک نتیجه گیری هم کنیم در کل این دو متد برای نمایش اطلاعات هستن حال __repr__ برای اطلاعات جزیی تر که بیشتر به کار توسعه دهنده اون پروژه میاد و __str__ برای اطلاعات کلی تر و ساده تر که برای کاربرای عادی برنامه مناسب هستامیدوارم مفید بوده باشه</description><category>Mohammadreza</category><author>Mohammadreza</author><pubDate>Sat, 22 Apr 2023 02:02:12 +0330</pubDate></item></channel></rss>