ویدیو آموزش تفاوت بین str و repr در پایتون
در این بخش از آموزش پیشرفته پایتون به سراغ تفاوت بین متدهای 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 با هدف دیباگ کردن برنامه و نشون دادن یک پیغام به برنامه نویس دیگه استفاده میشه.
اگر ویدیو بالا را دوست داشتید پیشنهاد میکنیم به مطالب زیر هم سر بزنید:
دوره اول آموزش پروژه محور پایتون
ارسال نظر