تفاوت بین str و repr پایتون در چیست؟

mohsen2 هفته قبل
ارسال شده در
python

در زبان برنامه‌نویسی پایتون، __str__ و __repr__ دو متد برای تبدیل اشیا به رشته‌های قابل خواندن برای انسان هستند. یکی برای کاربران نهایی و دیگری برای برنامه نویسان.

  • __repr__: هدف این متد ارائه نمایی دقیق و غیر مبهم از یک شی است، به طوری که اگر ممکن باشد، نتیجه‌ی آن رشته‌ای قابل استفاده در تابع eval باشد. این متد به‌طور معمول به توسعه‌دهندگان کمک می‌کند تا اشیا را بهتر درک کنند. برای مثال، اگر شما eval(repr(foo)) را اجرا کنید، باید به یک شی مشابه foo منجر شود.
  • __str__: این متد بیشتر برای نمایش اشیا برای نمایش به کاربران مناسب است و هدف آن ارائه نمای قابل خواندن است. به عنوان مثال، ممکن است که یک تاریخ را به فرمت "2023/10/05" نمایش دهد که برای یک کاربر عادی معنا دارد.

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

      >>> import datetime
>>> today = datetime.datetime.now()
>>> str(today)
'2012-03-14 09:21:58.130922'
>>> repr(today)
'datetime.datetime(2012, 3, 14, 9, 21, 58, 130922)'

    

برای درک بهتر، فرض کنید یک کلاس UUID در پایتون داریم. متدهای __str__ و __repr__ را به صورت زیر تعریف کرده ایم:

      import uuid

class CustomUUID:
    def __init__(self):
        self.uid = uuid.uuid1()
    
    def __str__(self):
        return str(self.uid)
    
    def __repr__(self):
        return f"CustomUUID('{self.uid}')"

    

در این مثال، __str__ یک نمایش کاربرپسند از UUID را برمی‌گرداند، در حالی که __repr__ نشان می‌دهد که این شی یک CustomUUID است و می‌توان به راحتی با خروجی داده شده همان شی را ایجاد کرد.

رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!