تصویر توسط نویسنده
پایتون یک زبان جادویی با مفاهیم بسیاری است که حتی کاربران پیشرفته نیز ممکن است با آن آشنا نباشند. روش های داندر یا جادویی یکی از آنهاست. روشهای جادویی روشهای خاصی هستند که با خطهای دوتایی احاطه شدهاند. آنها برخلاف روش های معمولی در پایتون به صراحت نامیده نمی شوند. یکی از این روش های جادویی است __getitem__
روشی که اشیاء پایتون را قادر میسازد مانند دنبالهها یا محفظههایی مانند فهرستها، دیکشنریها و تاپلها رفتار کنند. ایندکس یا برش را می گیرد و مقدار مربوط به آن را از مجموعه بازیابی می کند. هر زمان که از آن استفاده می کنیم به طور خودکار فراخوانی می شود 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
این روش برای جستجوی سریع ویژگی های نمونه بسیار مفید است. با توجه به انعطاف پذیری و تطبیق پذیری این روش، می توانم بگویم این یکی از کم استفاده ترین روش های جادویی پایتون است. امیدوارم از خواندن این مقاله لذت برده باشید و اگر علاقه مند به دانستن سایر روش های جادویی در پایتون هستید، در بخش نظرات به من اطلاع دهید.
کانوال مهرین یک توسعه دهنده نرم افزار مشتاق با علاقه شدید به علم داده و کاربردهای هوش مصنوعی در پزشکی است. Kanwal به عنوان Google Generation Scholar 2022 برای منطقه APAC انتخاب شد. کانوال دوست دارد دانش فنی را با نوشتن مقالاتی در مورد موضوعات پرطرفدار به اشتراک بگذارد و علاقه زیادی به بهبود نمایندگی زنان در صنعت فناوری دارد.
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- پلاتوبلاک چین. Web3 Metaverse Intelligence. دانش تقویت شده دسترسی به اینجا.
- منبع: https://www.kdnuggets.com/2023/03/introduction-getitem-magic-method-python.html?utm_source=rss&utm_medium=rss&utm_campaign=introduction-to-__getitem__-a-magic-method-in-python
- :است
- 2022
- 8
- a
- درباره ما
- دسترسی
- دسترسی
- رسیدن
- پیشرفته
- AI
- هوش مصنوعی در پزشکی
- معرفی
- اجازه دادن
- تحلیل
- و
- APAC
- برنامه های کاربردی
- هستند
- استدلال
- مقاله
- مقالات
- AS
- مشتاق
- مرتبط است
- خواص
- بطور خودکار
- BE
- مزایای
- سیاه پوست
- آبی
- ساخته شده در
- by
- صدا
- نام
- تماس ها
- CAN
- تغییر دادن
- کلاس
- رمز
- مجموعه
- توضیح
- کامل
- مفاهیم
- در نظر بگیرید
- با توجه به
- ظروف
- ایجاد
- سفارشی
- داده ها
- تحلیل داده ها
- علم اطلاعات
- داود
- عمیق تر
- تعریف می کند
- توسعه دهنده
- مختلف
- كشف كردن
- دو برابر
- e
- ساده
- موثر
- عنصر
- عناصر
- را قادر می سازد
- وارد
- ضروری است
- حتی
- مثال
- عصاره
- خیلی
- آشنا
- کمی از
- نام خانوادگی
- انعطاف پذیری
- به دنبال آن است
- برای
- از جانب
- تابع
- تابعی
- قابلیت
- نسل
- دریافت کنید
- اهداف
- گوگل
- کمک های مالی
- بیشتر
- سبز
- به کار گرفته
- آیا
- کمک
- اینجا کلیک نمایید
- کاپوت
- امید
- چگونه
- HTTPS
- i
- ID
- پیاده سازی
- بهبود
- in
- شاخص
- صنعت
- اطلاعات
- نمونه
- در عوض
- علاقه
- علاقه مند
- جالب
- معرفی
- IT
- اقلام
- ITS
- خود
- kdnuggets
- مشتاق
- کلید
- دانستن
- دانش
- زبان
- یادگیری
- پسندیدن
- خطوط
- لینک
- فهرست
- لیست
- بارگیری
- مراجعه
- دستگاه
- فراگیری ماشین
- شعبده بازي
- قابل نگهداری
- دستکاری شده
- بسیاری
- پزشکی
- حافظه
- روش
- روش
- قدرت
- بیش
- اکثر
- حرکت
- نام
- نیاز
- هدف
- اشیاء
- of
- on
- ONE
- اپراتور
- عادی
- دیگر
- پارامتر
- احساساتی
- افلاطون
- هوش داده افلاطون
- PlatoData
- موقعیت
- ممکن
- قدرت
- برنامهنویس
- پــایتــون
- سریع
- بالا بردن
- مطالعه
- قرمز
- منطقه
- نمایندگی
- نشان دهنده
- ضروری
- برگشت
- s
- علم
- بخش
- انتخاب شد
- خود
- اشتراک گذاری
- کوتاه
- باید
- تکه
- So
- نرم افزار
- برخی از
- ویژه
- شروع
- بیانیه
- ساختار
- دانشجو
- دانشجویان
- چنین
- احاطه شده
- نحو
- طول می کشد
- فن آوری
- صنعت فناوری
- فنی
- که
- La
- شان
- آنها
- اینها
- فکر کردن
- به
- تاپیک
- روند
- انواع
- زیر
- فهمیدن
- منحصر به فرد
- us
- استفاده
- استفاده کنید
- کاربران
- ارزش
- ترکه
- به طور گسترده ای
- اراده
- با
- در داخل
- بدون
- زنان
- زنان در فن آوری
- خواهد بود
- نوشتن
- نوشته
- شما
- زفیرنت