تقنية

attrgetter في بايثون: هل النقطة جزء من اسم السمة؟

الاسم المنقط وقيمة stone
الاسم. [1] [2]

النص نفسه قد يطلب اسمًا أو مسارًا. [1] [2]

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

attrgetter يفسر النقطة مسار سمات؛ يختلف عن getattr بالاسم الحرفي. [1] [2]

  • الكائن الداخلي يحمل tag=bud. [1] [2]
  • أضفنا اسمًا حرفيًا leaf.tag بقيمة stone. [1] [2]
  • getattr بهذا الاسم يعيد stone. [1] [2]
  • attrgetter بالنص نفسه يعيد bud. [1] [2]
  • اختبرنا 3.12.14؛ القيمتان بقيتا كما هما. [1] [2]

المثال

from operator import attrgetter
from types import (
    SimpleNamespace as NS)
obj=NS(leaf=NS(tag='bud'))
setattr(obj,'leaf.tag','stone')
print(getattr(obj,'leaf.tag'))
print(attrgetter('leaf.tag')(obj))

[1] [2]

اسم ومسار

المصدر هنا يتبع leaf أولًا، ثم يجلب tag من الكائن الناتج. المخرجان stone ثم bud. السمة ذات الاسم المنقط موجودة؛ المسار لم يقرأها بوصفها اسمًا كاملًا. [1] [2]

المسار المتداخل وقيمة bud
المسار. [1] [2]

النطاق

كائنان مؤلفان من SimpleNamespace، دون جلب مخصص. الأداة تستعمل جلب السمات العادي؛ ليست فحصًا ثابتًا أو قراءة مفاتيح قاموس. الجلب لا يغير قيم مثالنا. [1] [2]

المراجع

  1. Python 3.12: operator.attrgetter
  2. CPython 3.12.14: _operator.c
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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

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