__getitem__ এর ভূমিকা: পাইথনে একটি ম্যাজিক পদ্ধতি

__getitem__ এর ভূমিকা: পাইথনে একটি ম্যাজিক পদ্ধতি

উত্স নোড: 2011206

__getitem__ এর ভূমিকা: পাইথনে একটি ম্যাজিক পদ্ধতি
লেখকের ছবি

পাইথন এমন একটি জাদুকরী ভাষা যার অনেকগুলি ধারণা রয়েছে যা এমনকি উন্নত ব্যবহারকারীরাও পরিচিত নাও হতে পারে। ডান্ডার বা জাদুকরী পদ্ধতি তার মধ্যে অন্যতম। ম্যাজিক পদ্ধতি হল বিশেষ পদ্ধতি যা ডবল আন্ডারস্কোর দ্বারা বেষ্টিত। এগুলিকে অজগরের সাধারণ পদ্ধতির বিপরীতে স্পষ্টভাবে বলা হয় না। এমনই একটি ম্যাজিক পদ্ধতি হল __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

এই পদ্ধতিটি দৃষ্টান্তের বৈশিষ্ট্যগুলির দ্রুত সন্ধানের জন্য অত্যন্ত কার্যকর। এই পদ্ধতির নমনীয়তা এবং বহুমুখিতা বিবেচনা করে, আমি বলব এটি পাইথনের সবচেয়ে কম ব্যবহার করা জাদু পদ্ধতিগুলির মধ্যে একটি। আমি আশা করি আপনি এই নিবন্ধটি পড়ে উপভোগ করেছেন এবং আপনি যদি পাইথনের অন্যান্য জাদু পদ্ধতি সম্পর্কে জানতে আগ্রহী হন তবে মন্তব্য বিভাগে আমাকে জানান।
 
 
কানওয়াল মেহরীন একজন উচ্চাকাঙ্ক্ষী সফ্টওয়্যার ডেভেলপার যিনি ডাটা সায়েন্স এবং মেডিসিনে AI এর অ্যাপ্লিকেশনে গভীর আগ্রহের সাথে। কানওয়াল APAC অঞ্চলের জন্য Google জেনারেশন স্কলার 2022 হিসেবে নির্বাচিত হয়েছেন। কানওয়াল ট্রেন্ডিং বিষয়গুলিতে নিবন্ধ লিখে প্রযুক্তিগত জ্ঞান শেয়ার করতে পছন্দ করেন এবং প্রযুক্তি শিল্পে মহিলাদের প্রতিনিধিত্ব উন্নত করার বিষয়ে উত্সাহী৷
 

সময় স্ট্যাম্প:

থেকে আরো কেডনুগেটস