ویدیو آموزش تفاوت بین str و repr در پایتون

August 2019

در این بخش از آموزش پیشرفته پایتون به سراغ تفاوت بین متدهای str و repr رفتیم. این دو متد برای زمانی هستش که شما میخواید یک آبجکت رو چاپ کنید:

class Person:
    def __init__(self, name):
        self.name = name


p1 = Person('amir')
print(p1)

 

زمانی که کد بالا رو اجرا میکنیم به شکل زیر نتیجه رو به ما نشون میده:

<__main__.Person object at 0x7f2772b0cf50>

 

پاسخی که پایتون برای ما آورده آنچنان مطلوب نیستش و نمیشه چیز زیادی ازش فهمید. برای تغییر دادن این رفتار پایتون از متد str استفاده میکنیم:

class Person:
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return self.name


p1 = Person('amir')
print(p1)

 

خب حالا اگه کد بالا رو اجرا کنید نتیحه بهتری رو نمایش میده. در کد بالا به پایتون گفتیم زمانی که یک آبجکت رو چاپ کردیم مقدار name رو نشون بده:

amir

 

حالا متد repr چیه؟ متد repr هم دقیقا زمانی استفاده میشه که شما یک آبجکت رو صدا بزنید. اما تفاوتی که داره اینکه اگه کدتون رو از طریق ترمینال اجرا کنید متد repr فعال خواهد شد. درواقع متد repr برای زمانی هستش که شما قراره یک نتیجه رو به برنامه نویس دیگه نشون بدید اما متد str برای زمانی هستش که شما میخواید یک نتیجه رو به کاربر نشون بدین.

 

برای درک این موضوع داخل ترمنیال، با استفاده از دستور python وارد مفسر پایتون بشید.

حالا کد زیر رو وارد میکنیم:

>>> import datetime
>>> now = datetime.datetime.now()
>>> str(now)
'2019-8-15 10:29:34.786394'
>>> repr(now)
datetime.datetime(2019, 8, 15, 10, 29, 34, 786394)

 

در کد بالا ما زمان الآن رو ریختیم داخل متغیر now.

زمانی که با استفاده از متد str متغیر now رو صدا میزنیم میبینید که نتیجه به شکل یک زمان نشون داده میشه.

اما زمانی که متغیر now رو با متد repr صدا میزنیم نتیجه رو به شکل یک فانکشن میاره.

تفاوت این دو متد اینجا مشخص میشه. متد str برای نشون دادن یک نتیجه به کاربر عادی اما متد repr با هدف دیباگ کردن برنامه و نشون دادن یک پیغام به برنامه نویس دیگه استفاده میشه.

اگر ویدیو بالا را دوست داشتید پیشنهاد میکنیم به مطالب زیر هم سر بزنید:

دوره آموزش پایتون

دوره اول آموزش پروژه محور پایتون

دوره آموزش Multi Threading در پایتون

دوره آموزش GraphQL در پایتون

ارسال نظر

تلاش میکنم سوالات شما را در کمتر از یک روز پاسخ بدم

حسین نجف زاده

December 2021

خدا قوت. ممنون از آموزش های خوبتون.

پاسخ به نظر


daniayl

October 2021

نکات و مفهومی که به آن اشاره میکنید و توجیه میکنید خیلی جالب هستن باعث میشه که اول اموزش های شما رو چک کنم .

پاسخ به نظر


milad

April 2021

چرا فیلم بزرگ نمیشه

پاسخ به نظر


امیرحسین بیگدلو

April 2021

ویدیو مشکلی نداره و بزرگ میشه :/

فرشاد

February 2021

ایول عالی بود !
الان خیلی بهتر مفهوم برنامه نویسی شی گرا رو درک کردم
ممنون ازتون

پاسخ به نظر


SaLaR

December 2020

باز هم مثل همیشه عالی و کاربردی بود

پاسخ به نظر


فرشاد

October 2020

عالی بود ...

پاسخ به نظر


امیرحسین بیگدلو

October 2020

میدونم :)