
خوب حتما برات پیش اومده که دوست داشته باشی یک Object از Class ای که خودت تعریف کردی (بچه ها به تعریف یک کلاس تو برنامه نویسی میگن Declaration) رو توی Python Shell (همون محیط CMD پایتان) نمایش بدی. پایتان برای این قضیه متد __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 ها رو به صورت قطاری برات نشون بده.