نحذف مرجعًا قويًا ونراقب مرجعًا ضعيفًا. [1] [2] [3]
الخلاصة السريعة
المثال
import gc,weakref class C: pass old=gc.isenabled() gc.disable() try: obj=C();r=weakref.ref(obj) del obj print(gc.isenabled(),r() is None) finally: if old: gc.enable()
لماذا يختفي؟
الجامع الدوري يكمل العد المرجعي في CPython؛ تعطيله لا يعطل العد. حذفنا آخر مرجع قوي لكائن بلا دورة. أما إضافة obj.link=obj قبل الحذف فتعطي False False؛ وبعد الجمع اليدوي تصبح False True. [1] [2] [3]

الحدود
اختبار مؤلف بلا مُنهي أو رد نداء. لا نعمم توقيت الاختفاء على كل تنفيذ لبايثون، ولا نقيس ذاكرة نظام التشغيل أو سرعة البرنامج. [1] [2] [3]
المراجع
- Python: gc
- CPython3.12.14: gcmodule.c
- Python: weakref
- موضوع تك: لغة بايثون — مفردات
- موضوع تك: تطبيقات بايثون — مفردات
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
