wraps تُحدّث معلومات الغلاف وتضيف __wrapped__؛ لا تضيف استدعاء الأصل إلى جسم غلافنا. [1]
الخلاصة السريعة
لا؛ غلافنا يعيد leaf دون تشغيل الأصل. [1]
- wraps تُحدّث معلومات الغلاف وتضيف __wrapped__؛ لا تضيف استدعاء الأصل إلى جسم غلافنا. [1]
- على CPython 3.12.14، original تعيد bud وتسجل استدعاءها؛ wrapper تعيد leaf. [1]
- اسم wrapper يصبح original؛ wrapper.__wrapped__ is original تعطي True: الرابط يشير إلى الأصل. [1]
- wrapper() تعيد leaf والسجل []؛ تغير الاسم لم يغير نتيجة الجسم. [1]
- تحكم باستدعاء wrapper.__wrapped__(): تعيد bud والسجل ["original"]؛ تشغيل الأصل هنا جاء من الاستدعاء الصريح. [1]
معلومات الغلاف
wraps تُحدّث معلومات الغلاف وتضيف __wrapped__؛ لا تضيف استدعاء الأصل إلى جسم غلافنا. [1]
جسمان مختلفان
على CPython 3.12.14، original تعيد bud وتسجل استدعاءها؛ wrapper تعيد leaf. [1]
الاسم والرابط
اسم wrapper يصبح original؛ wrapper.__wrapped__ is original تعطي True: الرابط يشير إلى الأصل. [1]
from functools import wraps calls=[] def original(): calls.append("original") return "bud" @wraps(original) def wrapper():return "leaf" print(wrapper.__name__,wrapper.__wrapped__ is original) [1]

الاستدعاء والتحكم
wrapper() تعيد leaf والسجل []؛ تغير الاسم لم يغير نتيجة الجسم. [1]
print(wrapper(),calls) print(wrapper.__wrapped__(),calls) [1]
تحكم باستدعاء wrapper.__wrapped__(): تعيد bud والسجل ["original"]؛ تشغيل الأصل هنا جاء من الاستدعاء الصريح. [1]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
