تقنية

Element.append في بايثون: هل ينقل الابن من الأب القديم؟

الأبوان يحملان الابن نفسه
مرجعان. [1] [2] [3]

إضافة الابن ليست نقلًا تلقائيًا في هذه التجربة. [1] [2] [3]

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

لا؛ بقي الابن في الأب الأول بعد إضافته إلى الثاني. [1] [2] [3]

  • نضيف leaf نفسه إلى a ثم إلى b. [1] [2] [3]
  • عدد أبناء كل منهما 1. [1] [2] [3]
  • المرجعان يشيران إلى الكائن نفسه، لا نسختين. [1] [2] [3]
  • تغيير نص الابن إلى bud يظهر عبر المرجعين. [1] [2] [3]
  • اختبرنا 3.12.14 مع ElementTree؛ دون ملف أو تسلسل XML. [1] [2] [3]

المثال

from xml.etree.ElementTree import Element
a=Element('a');b=Element('b')
leaf=Element('leaf')
a.append(leaf);b.append(leaf)
print(len(a),len(b))
print(a[0] is b[0] is leaf)
leaf.text='bud'
print(a[0].text,b[0].text)

[1] [2] [3]

الإضافة والمرجع

المصدر هنا يضيف مرجع الابن إلى قائمة أبناء الأب المستهدف. المخرجات 1 1 ثم True ثم bud bud. الإضافة إلى b لم تحذف مرجع a، ولم تنشئ ابنًا مستقلًا. [1] [2] [3]

نص مشترك bud
تغيير واحد. [1] [2] [3]

النطاق

كائنات مؤلفة في مكتبة بايثون القياسية. لا ننسب هذا السلوك إلى كل مكتبات XML. [1] [2] [3]

المراجع

  1. Python 3.12: Element.append
  2. CPython 3.12.14: ElementTree.py
  3. CPython 3.12.14: _elementtree.c
  4. موضوع تك: لغة بايثون — مفردات
  5. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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