سلام.
توی این نوشته/متن/آموزش/ یا هرچی که اسمش هست میخوایم یکی از دیزاین پترن هارو توضیح بدیم.
خب همونطور که از اسمش مشخصه سینگلتون ینی اینکه یه کلاس فقط و فقط یک اینستنس خواهد داشت.
حالا برای اینکار باید چیکار کنیم؟
من یه کلاس تست ایجاد میکنم و بهش میگم هر شی که ایجاد کردی آیدیشو بهم بده!
اینطوری:
میبینیم که هر اینستنس یه آیدی یونیک داره و از هم میتونیم با آیدی متمایزشون کنیم.
حالا میخایم یکاری کنیم که دیگه شی بیشتر از یدونه نسازه.
برای اینکار باید از متد __new__ استفاده کنیم این همون متدیه که شی مارو میسازه.
این متد هست:
متد نیو اینستنس رو میسازه! حالا باید این متد رو طوری تغییر بدیم که فقط یدونه بسازه.
اینطوری:
اینجا یه متغیر ساختیم که همیشه قبل از ساخت شی جدید از روی کلاس چک میکنه که این اینستنس وجود داره یا نه . اگر وجود نداشت یدونه میسازه و ذخیره اش میکنه توی این متغیر و اگر وجود داشت همون قبلی رو ریترن میکنه.
اگر شما هم مثل من زیاد با متن حال نمیکنید یه ویدیو با جزئیات بیشتر هم رکورد کردم! میتونید اینجا ببینید:
امیدوارم براتون مفید باشه. پیشنهاد انتقاد و هر نظری دارید برام توی کامنت ها بنویسید.