القائمة الافتراضية مشتركة بين مثيلي namedtuple في مثالنا. [1] [2]
الخلاصة السريعة
لا؛ المثيلان يستعملان القائمة نفسها. [1] [2]
- القائمة الافتراضية مشتركة بين مثيلي namedtuple في مثالنا. [1] [2]
- في CPython 3.12.14، shared=[]؛ ننشئ T بحقل items وdefaults=[shared]، ثم first=T() وsecond=T() دون وسيط. [1] [2]
- first.items هي shared وهي second.items؛ إضافة "bud" عبر first تظهر في shared وsecond أيضًا. [1] [2]
- المصنع يحول defaults إلى tuple ويربطها بـ__new__.__defaults__؛ في تجربتنا القيمة المرتبطة هي shared نفسها. [1] [2]
- تحكم بصنف مستقل U بحقل items دون افتراضي؛ left=U([]) وright=U([]) يأخذان قائمتين جديدتين. بعد إضافة "bud" عبر left، تبقى right فارغة وتختلف هويتا القائمتين. [1] [2]
قائمة مشتركة
القائمة الافتراضية مشتركة بين مثيلي namedtuple في مثالنا. [1] [2]
المثيلان
في CPython 3.12.14، shared=[]؛ ننشئ T بحقل items وdefaults=[shared]، ثم first=T() وsecond=T() دون وسيط. [1] [2]
أثر الإضافة
first.items هي shared وهي second.items؛ إضافة "bud" عبر first تظهر في shared وsecond أيضًا. [1] [2]
from collections import namedtuple shared=[] T=namedtuple("T","items",defaults=[shared]) first=T();second=T() print(first.items is shared,first.items is second.items) first.items.append("bud") print(shared,second.items) [1] [2]
![U:items; left=U([]); right=U([]); left.items.append("bud"); left.items:["bud"]; right.items:[]; same:False](https://images.bahralolom.com/assets/local-2000-20261012/BA-1752/python-named-shared-default-values.png)
قيم صريحة
المصنع يحول defaults إلى tuple ويربطها بـ__new__.__defaults__؛ في تجربتنا القيمة المرتبطة هي shared نفسها. [1] [2]
U=namedtuple("U","items") left=U([]);right=U([]) left.items.append("bud") print(left.items is right.items,left.items,right.items) [1] [2]
تحكم بصنف مستقل U بحقل items دون افتراضي؛ left=U([]) وright=U([]) يأخذان قائمتين جديدتين. بعد إضافة "bud" عبر left، تبقى right فارغة وتختلف هويتا القائمتين. [1] [2]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
![namedtuple; defaults:[shared]; first.items is second.items:True; first.items.append("bud"); second.items:["bud"]](https://images.bahralolom.com/assets/local-2000-20261012/BA-1752/python-named-shared-default-main.png)