ویرگول
ورودثبت نام
بیژن حجازی
بیژن حجازیسلام! نوشتن به منزله مطالعه «خود» هست. من بیشتر تو زمینه برنامه نویسی و روان شناسی مطلب میذارم. خوشحال میشم نظرات تون رو باهام در میون بذارین.
بیژن حجازی
بیژن حجازی
خواندن ۲ دقیقه·۵ سال پیش

متد __repr__ در Pyhton

یادت باشه اگه گفتن لوگوی پایتان رو بکشی رنگ زرد پایینه و رنگ آبی بالا. فرض کن آبی چون آسمونه بالاست.
یادت باشه اگه گفتن لوگوی پایتان رو بکشی رنگ زرد پایینه و رنگ آبی بالا. فرض کن آبی چون آسمونه بالاست.

خوب حتما برات پیش اومده که دوست داشته باشی یک Object از Class ای که خودت تعریف کردی (بچه ها به تعریف یک کلاس تو برنامه نویسی میگن Declaration) رو توی Python Shell (همون محیط CMD پایتان) نمایش بدی. پایتان برای این قضیه متد __repr__ رو پیش بینی کرده.

چطوری متد __repr__ رو تعریف کنم؟

بذاری با یک مثال برات توضیح بدم. فرض کن کلاس Student رو به صورت زیر تعریف کردیم.

class Student: name = None grade = None def __init__(self, name, grade): self.name = name self.grade = grade

خوب حالا همون طوری که میدونی مثلا وقتی توی Python Shell می گیم:

x = 2

بعدش بهمون مقدار همون x رو نمایش میده. حالا اگه از کلاس Student مون یک نمونه جدید درست کنیم و print اش بگیریم و فایل پایتان رو توی CMD اجرا کنیم، چی نشون میده؟ مثلا فرض کن این طوری:

bizhan = Student("Bizhan", 25) print(bizhan)

خوب در این حالت یک نمایش ساده و پیش فرض میده. ولی ممکنه دوست داشته باشیم یک نمایش دلخواه بهمون بده. مثلا یک نمودار درست کنه. در این جاست که متد __repr__ به کارمون میاد. در ضمن واسه این که بهتر یادت بمونه repr مخفف representation به معنی نمایش هست. این متد روی کلاس تعریف میشه و باید یک string رو return کنه. بعد از این هر وقت که قرار باشه نمونه ای از اون کلاس print گرفته بشه، ماحل تابع __repr__ پرینت گرفته میشه.

class Student: name = None grade = None def __init__(self, name, grade): self.name = name self.grade = grade def __repr__(self): return 'the name of the student is {}, he/she has a grade of: {}'.format(self.name, self.grade) bizhan = Student("Bizhan", 25) print(bizhan)

حالا اگه همین کد بالا رو توی یک فایل با پسوند py ذخیره کنی و توی CMD اجراش کنی می بینی که چی برات پرینت میکنه توی CMD.

یکی از جاهایی که __repr__ خیلی به کار میاد واسه نمایش داده Data Structure هایی هست که به صورت دستی درست میکنی. مثلا Linked List ها. می تونی با print گرفتن یک linked list توی CMD و استفاده از متد __repr__ کاری کنی که Node ها رو به صورت قطاری برات نشون بده.


پایتونبرنامه نویسی
۵
۳
بیژن حجازی
بیژن حجازی
سلام! نوشتن به منزله مطالعه «خود» هست. من بیشتر تو زمینه برنامه نویسی و روان شناسی مطلب میذارم. خوشحال میشم نظرات تون رو باهام در میون بذارین.
شاید از این پست‌ها خوشتان بیاید