تقنية

_field_defaults في namedtuple: هل تعديلها يغير افتراضي المنشئ؟

namedtuple; T:default "bud"; T._field_defaults["item"]="leaf"; T().item:"bud"
إسناد.

تغيير مدخل _field_defaults لا يغير افتراضي المنشئ في مثالنا. [1] [2]

الخلاصة السريعة

لا؛ T() تبقى مع القيمة الأصلية. [1] [2]

  • تغيير مدخل _field_defaults لا يغير افتراضي المنشئ في مثالنا. [1] [2]
  • في CPython 3.12.14، نعرّف T بحقل item وdefaults=["bud"]؛ T().item تبدأ بـ"bud". [1] [2]
  • نسند "leaf" إلى T._field_defaults["item"]؛ القاموس يعرض {"item":"leaf"}، لكن T().item تبقى "bud". [1] [2]
  • المصنع ينشئ قاموس المطابقة منفصلًا عن tuple الافتراضيات المرتبطة بـ__new__.__defaults__؛ الأخيرة تبقى ("bud",) هنا. [1] [2]
  • تحكم بصنف مستقل U بحقل item وdefaults=["leaf"] عند الإنشاء؛ قاموسه يعرض {"item":"leaf"} وU().item تعطي "leaf". نختبر نصين وإعادة إسناد مدخل القاموس، دون تغيير افتراضيات المنشئ يدويًا. [1] [2]

المطابقة والمنشئ

تغيير مدخل _field_defaults لا يغير افتراضي المنشئ في مثالنا. [1] [2]

القيمة الأصلية

في CPython 3.12.14، نعرّف T بحقل item وdefaults=["bud"]؛ T().item تبدأ بـ"bud". [1] [2]

إسناد المدخل

نسند "leaf" إلى T._field_defaults["item"]؛ القاموس يعرض {"item":"leaf"}، لكن T().item تبقى "bud". [1] [2]

from collections import namedtuple T=namedtuple("T","item",defaults=["bud"]) T._field_defaults["item"]="leaf" print(T._field_defaults) print(T().item,T.__new__.__defaults__) [1] [2]

namedtuple; U:defaults=["leaf"]; U._field_defaults:{"item":"leaf"}; U().item:"leaf"
إنشاء.

صنف جديد

المصنع ينشئ قاموس المطابقة منفصلًا عن tuple الافتراضيات المرتبطة بـ__new__.__defaults__؛ الأخيرة تبقى ("bud",) هنا. [1] [2]

U=namedtuple("U","item",defaults=["leaf"]) print(U._field_defaults) print(U().item,U.__new__.__defaults__) [1] [2]

تحكم بصنف مستقل U بحقل item وdefaults=["leaf"] عند الإنشاء؛ قاموسه يعرض {"item":"leaf"} وU().item تعطي "leaf". نختبر نصين وإعادة إسناد مدخل القاموس، دون تغيير افتراضيات المنشئ يدويًا. [1] [2]

المراجع

  1. Python namedtuple
  2. CPython namedtuple

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.