ولی باگ دوم که من حتی توی سورس کد فریمورکها و کتابخانههای معروف پایتون هم زیاد دیدم به راحتی میتونه توی مصاحبههای اولیه اوضاع رو بر علیه شما بکنه
مشکل باز هم توی این خط هست :
return f"Person(name={self.name!r}, age={self.age!r})"
اگر دقت کنید اسم کلاس hard code شده ینی اگر بعد از مدتی که پروژه بزرگ شد بجای کلاس Person از مثلا Student استفاده بشه و فراموش کنید که
__repr__
رو تغییر بدید؛ بوقت دیباگ کردن کد باعث سردرگمی بزرگی میشه؛
راه حل :
return f"{type(self).__name__}(name={self.name!r}, age={self.age!r})"
که خب
type(self)
میگه که ی instance از کلاس Person هست و وقتی __name__ رو میگیرم دقیقا اسم کلاس رو برمیگردونه ینی Person هر تغییری هم که روی اسم کلاس اعمال بشه هیچ نیازی به تغییر
__repr__
نیست.
توی تصویر این پست هم میتونید ببینید :
https://t.me/pyHints/7
@PyHints
مشکل باز هم توی این خط هست :
return f"Person(name={self.name!r}, age={self.age!r})"
اگر دقت کنید اسم کلاس hard code شده ینی اگر بعد از مدتی که پروژه بزرگ شد بجای کلاس Person از مثلا Student استفاده بشه و فراموش کنید که
__repr__
رو تغییر بدید؛ بوقت دیباگ کردن کد باعث سردرگمی بزرگی میشه؛
راه حل :
return f"{type(self).__name__}(name={self.name!r}, age={self.age!r})"
که خب
type(self)
میگه که ی instance از کلاس Person هست و وقتی __name__ رو میگیرم دقیقا اسم کلاس رو برمیگردونه ینی Person هر تغییری هم که روی اسم کلاس اعمال بشه هیچ نیازی به تغییر
__repr__
نیست.
توی تصویر این پست هم میتونید ببینید :
https://t.me/pyHints/7
@PyHints