مقدمة إلى __getitem__: طريقة سحرية في بايثون

مقدمة إلى __getitem__: طريقة سحرية في بايثون

عقدة المصدر: 2011206

مقدمة إلى __getitem__: طريقة سحرية في بايثون
صورة المؤلف

Python هي لغة سحرية بها العديد من المفاهيم التي قد لا يكون المستخدمون المتقدمون على دراية بها. الطرق السحرية أو الغامضة هي واحدة منها. الطرق السحرية هي طرق خاصة محاطة بشرطة سفلية مزدوجة. لم يتم استدعاؤها صراحةً على عكس الطرق العادية في بيثون. أحد هذه الأساليب السحرية هو __getitem__ طريقة تمكن كائنات Python من التصرف مثل التسلسلات أو الحاويات مثل القوائم والقواميس و tuple. يأخذ الفهرس أو الشريحة ويسترد القيمة المرتبطة به من المجموعة. يتم استدعاؤه تلقائيًا عندما نستخدم الامتداد indexer [ ] عامل التشغيل للوصول إلى العناصر الموجودة داخل الكائن الخاص بك.

فكر في هذه الطريقة على أنها عصا سحرية تمنحك القدرة على استخراج المعلومات المطلوبة بمجرد كتابة بضعة أسطر من التعليمات البرمجية. ممتع أليس كذلك؟ تُستخدم هذه الطريقة أيضًا على نطاق واسع في تحليل البيانات والتعلم الآلي. لذا ، دعنا نتعمق أكثر في ملف __getitem__ طريقة واكتشاف قوتها ومرونتها.

أريدك أن تفهم أن واجبك كمبرمج بايثون هو أكثر من مجرد كتابة كود وظيفي. يجب أن تكون التعليمات البرمجية الخاصة بك فعالة وقابلة للقراءة ويمكن صيانتها. استخدام __getitem__ سوف تساعدك على تحقيق هذه الأهداف. فيما يلي بعض الفوائد الأخرى لاستخدام هذه الطريقة السحرية:

  • يقلل استخدام الذاكرة من خلال السماح لك باستخراج المعلومات الأساسية فقط بدلاً من تحميل بنية البيانات الكاملة في الذاكرة
  • يوفر قدرًا أكبر من المرونة في كيفية معالجة البيانات ومعالجتها
  • يسمح لك بالتكرار على المجموعة دون تكرار البيانات
  • يعزز الوظيفة من خلال السماح لك بكتابة فهرسة متقدمة قد لا تكون ممكنة مع الأنواع المضمنة
  • يبسط الكود لأنه يستخدم الترميز المألوف

بناء الجملة لملف __getitem__ الطريقة على النحو التالي:

def __getitem__(self, index): # Your Implementation pass

 

يحدد سلوك الوظيفة ويأخذ الفهرس الذي تحاول الوصول إليه في معاملها. يمكننا استخدام هذه الطريقة على النحو التالي:

my_obj[index] 

 

هذا يترجم إلى البيان my_obj.__getitem__(index) تحت الغطاء. الآن قد تعتقد كيف تختلف عن المضمنة indexer [] المشغل أو العامل؟ أينما تستخدم هذا الترميز ، يقوم بيثون تلقائيًا باستدعاء __getitem__ طريقة لك وهو الاختصار للوصول إلى العناصر. ولكن إذا كنت تريد تغيير سلوك فهرسة الكائنات المخصصة ، فأنت بحاجة إلى استدعاء ملف __getitem__ الأسلوب.

مثال #01

لنبدأ بمثال سهل أولاً. سننشئ فصلًا للطلاب يحتوي على قائمة بجميع الطلاب ويمكننا الوصول إليهم عن طريق الفهرس ونعتبر أن الفهرس يمثل معرف الطالب الفريد الخاص بهم.

class Student: def __init__(self, names): self.names=names def __getitem__(self,index): return self.names[index] section_A= Student(["David", "Elsa", "Qasim"])
print(section_A[2])

 

الإخراج:

 

سننتقل الآن إلى مثال متقدم حيث سنقوم بتغيير سلوك الفهرسة باستخدام __getitem__ طريقة. لنفترض أن لدي قائمة بعناصر السلسلة وأريد استرداد العنصر كلما أدخلت موضع الفهرس الخاص به ويمكنني أيضًا الحصول على موضع الفهرس إذا قمت بإدخال السلسلة نفسها.

class MyList: def __init__(self, items): self.items = items def __getitem__(self, index): if isinstance(index, int): return self.items[index] elif isinstance(index, str): return self.items.index(index) else: raise TypeError("Invalid Argument Type") my_list = MyList(['red', 'blue', 'green', 'black']) # Indexing with integer keys
print(my_list[0]) print(my_list[2]) # Indexing with string keys
print(my_list['red']) print(my_list['green']) 

 

الإخراج:

red
green
0 2

هذه الطريقة مفيدة للغاية للبحث السريع عن سمات المثيل. بالنظر إلى مرونة وتعدد استخدامات هذه الطريقة ، أود أن أقول إن هذه واحدة من أكثر الأساليب السحرية التي لا تستخدم بشكل كافٍ في بايثون. أتمنى أن تكون قد استمتعت بقراءة هذا المقال وأخبرني في قسم التعليقات إذا كنت مهتمًا بمعرفة الطرق السحرية الأخرى في Python.
 
 
كانوال محرين مطور برامج طموح لديه اهتمام كبير بعلوم البيانات وتطبيقات الذكاء الاصطناعي في الطب. تم اختيار Kanwal باعتباره Google Generation Scholar 2022 لمنطقة APAC. يحب Kanwal مشاركة المعرفة التقنية من خلال كتابة مقالات حول الموضوعات الشائعة ، وهو متحمس لتحسين تمثيل المرأة في صناعة التكنولوجيا.
 

الطابع الزمني:

اكثر من KD nuggets