تقنية

namedtuple في بايثون: هل _replace تغير الأصل؟

الأصل 4 و8؛ الناتج الجديد 4 و12.
الأصل والناتج.

_replace تعيد كائن namedtuple جديدًا بالقيم المحددة؛ الأصل يبقى كما هو. [1]

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

لا؛ احتفظ بالناتج لتستعمل القيم الجديدة. [1]

  • _replace تعيد كائن namedtuple جديدًا بالقيم المحددة؛ الأصل يبقى كما هو. [1]
  • في مثال بأعداد صحيحة، نغير قيمة الحقل y وحده؛ قيمة x تنتقل إلى الناتج. [1]
  • على CPython 3.12.14، ننشئ T بحقلين x وy، ثم original=T(4,8). [1]
  • replacement=original._replace(y=12): الأصل (4,8)، والناتج (4,12)؛ هما كائنان مختلفان. [1]
  • تحكم: نستدعي original._replace(x=20) ونهمل الناتج؛ الأصل يبقى (4,8). عند حفظ الناتج نجد (20,8)، والناتج السابق يبقى (4,12). [1]

الأصل والناتج

_replace تعيد كائن namedtuple جديدًا بالقيم المحددة؛ الأصل يبقى كما هو. [1]

الحقل المحدد

في مثال بأعداد صحيحة، نغير قيمة الحقل y وحده؛ قيمة x تنتقل إلى الناتج. [1]

كائنان للتجربة

على CPython 3.12.14، ننشئ T بحقلين x وy، ثم original=T(4,8). [1]

from collections import namedtuple T=namedtuple("T","x y") original=T(4,8) replacement=original._replace(y=12) print(tuple(original),tuple(replacement)) [1]

حفظ ناتج استبدال x يعطينا 20 و8؛ الأصل يبقى 4 و8.
حفظ الناتج.

حفظ الناتج

replacement=original._replace(y=12): الأصل (4,8)، والناتج (4,12)؛ هما كائنان مختلفان. [1]

original._replace(x=20) print(tuple(original)) control=original._replace(x=20) print(tuple(control),tuple(replacement)) [1]

تحكم: نستدعي original._replace(x=20) ونهمل الناتج؛ الأصل يبقى (4,8). عند حفظ الناتج نجد (20,8)، والناتج السابق يبقى (4,12). [1]

المراجع

  1. Python namedtuple

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

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