exec_body تملأ نطاق الأسماء المعطى؛ إرجاع قاموس وحده لا يملؤه. [1] [2]
الخلاصة السريعة
لا؛ حدّث النطاق الذي تستقبله. [1] [2]
- exec_body تملأ نطاق الأسماء المعطى؛ إرجاع قاموس وحده لا يملؤه. [1] [2]
- على CPython 3.12.14، returning تعيد قاموسًا فيه mark بقيمة bud، دون تحديث ns. [1] [2]
- hasattr(Returned,"mark") تعطي False؛ استدعاء returning حدث، لكن قاموسها المعاد لم يصبح نطاق الفئة. [1] [2]
- التحكم populating تكتب ns["mark"]="bud"؛ Populated.mark تعطي bud. كلا الاستدعاءين بقواعد فارغة وصنف ميتا افتراضي. [1] [2]
- المصدر يستدعي exec_body(ns) دون حفظ ناتجها، ثم يمرر ns لإنشاء الفئة. لا يختبر المثال أصنافًا ميتا مخصصة. [1] [2]
تعبئة النطاق
exec_body تملأ نطاق الأسماء المعطى؛ إرجاع قاموس وحده لا يملؤه. [1] [2]
قاموس معاد
على CPython 3.12.14، returning تعيد قاموسًا فيه mark بقيمة bud، دون تحديث ns. [1] [2]
السمة الغائبة
hasattr(Returned,"mark") تعطي False؛ استدعاء returning حدث، لكن قاموسها المعاد لم يصبح نطاق الفئة. [1] [2]
from types import new_class def returning(ns): return {"mark":"bud"} Returned=new_class("Returned",(),{},returning) print(hasattr(Returned,"mark")) [1] [2]

التحديث والتحكم
التحكم populating تكتب ns["mark"]="bud"؛ Populated.mark تعطي bud. كلا الاستدعاءين بقواعد فارغة وصنف ميتا افتراضي. [1] [2]
def populating(ns): ns["mark"]="bud" Populated=new_class("Populated",(),{},populating) print(Populated.mark) [1] [2]
المصدر يستدعي exec_body(ns) دون حفظ ناتجها، ثم يمرر ns لإنشاء الفئة. لا يختبر المثال أصنافًا ميتا مخصصة. [1] [2]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
