چرخه زندگی Object

  • مدرس: علی بیگدلی
  • تاریخ انتشار: Aug 24, 2020

چرخه حیات یک شی از ایجاد، دستکاری و تخریب آن است. مرحله اول چرخه حیات یک شی تعریف کلاس که به آن تعلق دارد. مرحله بعدی، نمونه سازی یک نمونه است، زمانی که نام __init__ نامیده می شود. حافظه اختصاص داده شده برای ذخیره نمونه است. درست قبل از این اتفاق، روش __new__ از کلاس نامیده می شود. این معمولا تنها در موارد خاص لغو می شود. پس از این اتفاق افتاده است، جسم آماده استفاده است. نکته:سپس کد دیگر می تواند با شیء با توابع در آن و دسترسی به ویژگی های آن ارتباط برقرار کند. در نهایت، استفاده از آن تمام خواهد شد و می تواند نابود شود. هنگامی که یک شیء نابود می شود، حافظه اختصاص داده شده به آن آزاد می شود و می تواند برای اهداف دیگر مورد استفاده قرار گیرد. تخریب یک شی وقتی رخ میدهد که شمارش مرجع آن صفر باشد. تعداد مرجع تعداد متغیرها و عناصر دیگر است که به یک شی اشاره می کنند. اگر چیزی به آن اشاره نکرده (شمارش مرجع صفر است)، هیچ چیز با آن ارتباط برقرار نمی کند، بنابراین می توان آن را با خیال راحت حذف کرد. در برخی موارد، دو (یا بیشتر) اشیا را می توان تنها با یکدیگر ارجاع کرد، و بنابراین می توان آن را نیز حذف کرد. بیانیه دل باعث کاهش تعداد مرجع یک شی توسط یک می شود و این امر اغلب منجر به حذف آن می شود. روش جادویی برای بیان دل __del__ است. فرآیند حذف اشیاء زمانی که آنها دیگر لازم نیست مجموعه جمع آوری زباله نامیده می شود. به طور خلاصه، تعداد مرجع ابعاد زمانی افزایش می یابد که یک نام جدید به آن اختصاص داده شود یا در یک کانتینر قرار گیرد (لیست، اصطلاح یا فرهنگ لغت). شمارش مرجع ابعاد زمانی کاهش می یابد که با دل حذف می شود، مرجع آن مجددا تعیین می شود یا مرجع آن از محدوده خارج می شود. هنگامی که تعداد مرجع یک شی به صفر برسد، پایتون آن را به طور خودکار حذف می کند.

a = 42  # Create object <42>
b = a  # Increase ref. count  of <42> 
c = [a]  # Increase ref. count  of <42> 
del a  # Decrease ref. count  of <42>
b = 100  # Decrease ref. count  of <42> 
c[0] = -1  # Decrease ref. count  of <42>

نکته:زبانهای سطح پایین مثل C این نوع از مدیریت حافظه خودکار را ندارند.

ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
2دیدگاه
  • ستعل
    1 year, 7 months ago

    سلام خسته نباشید ممنون ار اموزش های خوبتون ببخشید ویدیو های این قسمت ها رو دیگه نمیزارید

    • علی بیگدلی
      1 year, 7 months ago

      می خوام دوره رو آپدیت کنم و مجدد فیلم بگیرم ولی زمان میبره