بقاء المثيل لا يبقي كائن الطريقة المؤقتة حيًا في مثالنا. [1] [2]
الخلاصة السريعة
المرجع العادي فقد كائن الطريقة المؤقتة هنا. [1] [2]
- بقاء المثيل لا يبقي كائن الطريقة المؤقتة حيًا في مثالنا. [1] [2]
- على CPython 3.12.14، Node.read تعيد bud؛ own=Node() يبقى حيًا. [1] [2]
- plain=ref(own.read)؛ plain() تعيد None، لأننا لم نحفظ كائن الطريقة بمرجع قوي. [1] [2]
- special=WeakMethod(own.read)؛ special() تعيد طريقة مرتبطة بـown، ونداؤها يعطي bud. التنفيذ يعيد بناء الطريقة من المثيل والدالة الأصليين. [1] [2]
- تحكم مستقل: saved=control.read محفوظة؛ kept=ref(saved)؛ kept() تعيد saved نفسها ونداؤها يعطي bud. المثال لطريقة بايثون عادية؛ لا نحذف المثيل أو نعمم توقيت الاختفاء. [1] [2]
المثيل والطريقة
بقاء المثيل لا يبقي كائن الطريقة المؤقتة حيًا في مثالنا. [1] [2]
مثيل حي
على CPython 3.12.14، Node.read تعيد bud؛ own=Node() يبقى حيًا. [1] [2]
المرجع العادي
plain=ref(own.read)؛ plain() تعيد None، لأننا لم نحفظ كائن الطريقة بمرجع قوي. [1] [2]
from weakref import ref,WeakMethod class Node: def read(self):return "bud" own=Node();plain=ref(own.read) special=WeakMethod(own.read) print(plain() is None) [1] [2]

البناء والتحكم
special=WeakMethod(own.read)؛ special() تعيد طريقة مرتبطة بـown، ونداؤها يعطي bud. التنفيذ يعيد بناء الطريقة من المثيل والدالة الأصليين. [1] [2]
print(special()()) control=Node();saved=control.read kept=ref(saved) print(kept() is saved,kept()()) [1] [2]
تحكم مستقل: saved=control.read محفوظة؛ kept=ref(saved)؛ kept() تعيد saved نفسها ونداؤها يعطي bud. المثال لطريقة بايثون عادية؛ لا نحذف المثيل أو نعمم توقيت الاختفاء. [1] [2]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
