কম্পিউটার

Python TypeError:'পদ্ধতি' অবজেক্ট সাবস্ক্রিপ্টযোগ্য সমাধান নয়

পাইথন পদ্ধতিতে আর্গুমেন্ট অবশ্যই বন্ধনীর মধ্যে উল্লেখ করতে হবে। এর কারণ হল ফাংশন এবং পদ্ধতি উভয়ই বন্ধনী ব্যবহার করে তা বলতে পারে যে তাদের কল করা হচ্ছে কিনা। আপনি একটি পদ্ধতি কল করার জন্য বর্গাকার বন্ধনী ব্যবহার করলে, আপনি একটি "TypeError:'method' object is not subscriptable" এরর সম্মুখীন হবেন।

এই নির্দেশিকায়, আমরা এই ত্রুটির অর্থ কী এবং কেন আপনি এটির সম্মুখীন হতে পারেন তা নিয়ে আলোচনা করি৷ আমরা আপনাকে একটি সমাধান তৈরি করতে সাহায্য করার জন্য এই ত্রুটির একটি উদাহরণ দিয়ে চলেছি৷

TypeError:'পদ্ধতি' অবজেক্ট সাবস্ক্রিপ্টযোগ্য নয়

সাবস্ক্রিপ্টযোগ্য বস্তু হল একটি __getitem__ পদ্ধতি সহ বস্তু। এই যেমন তালিকা, অভিধান, এবং tuples হিসাবে ডেটা প্রকার. __getitem__ পদ্ধতি পাইথন দোভাষীকে একটি সংগ্রহ থেকে একটি পৃথক আইটেম পুনরুদ্ধার করার অনুমতি দেয়।

সব বস্তু সাবস্ক্রিপ্টযোগ্য নয়। পদ্ধতি, উদাহরণস্বরূপ, না. এটি কারণ তারা __getitem__ পদ্ধতি বাস্তবায়ন করে না। এর মানে হল আপনি একটি পদ্ধতিতে আইটেমগুলি অ্যাক্সেস করতে বা একটি পদ্ধতিতে কল করতে বর্গাকার বন্ধনী সিনট্যাক্স ব্যবহার করতে পারবেন না।

নিম্নলিখিত কোড স্নিপেট বিবেচনা করুন:

চিজ =["এডাম", "স্টিলটন", "ইংলিশ চেডার", "পারমেসান"]প্রিন্ট(চিজ[0])

এই কোডটি "এডাম" প্রদান করে, পনির সূচকের অবস্থান 0 এ। আমরা একটি ফাংশন বা পদ্ধতি কল করতে বর্গাকার বন্ধনী ব্যবহার করতে পারি না কারণ ফাংশন এবং পদ্ধতিগুলি সাবস্ক্রিপ্টযোগ্য বস্তু নয়।

একটি উদাহরণ দৃশ্য

এখানে, আমরা একটি প্রোগ্রাম তৈরি করি যা বস্তুতে পনির সংরক্ষণ করে। পনিরকে সংজ্ঞায়িত করতে আমরা যে "পনির" শ্রেণী ব্যবহার করি তার একটি পদ্ধতি থাকবে যা আমাদের চেক করতে দেয় যে পনির একটি নির্দিষ্ট দেশ থেকে এসেছে কিনা।

আমাদের পনিরের জন্য একটি ক্লাস সংজ্ঞায়িত করে শুরু করুন। আমরা এই শ্রেণীর পনির বলি:

81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।

শ্রেণীর পনির:def __init__(self, name, origin):self.name =name self.origin =origin def get_country(self, to_compare):if to_compare ==self.origin:print("{} থেকে {{ }.".format(self.name, self.origin)) else:print("{} {} থেকে নয়। এটি {}.".format(self.name, to_compare, self.origin)) 

আমাদের ক্লাসে দুটি পদ্ধতি রয়েছে। প্রথম পদ্ধতিটি পনির বস্তুর গঠন সংজ্ঞায়িত করে। দ্বিতীয়টি আমাদের চেক করতে দেয় যে পনিরের উৎপত্তি দেশটি একটি নির্দিষ্ট মানের সমান কিনা।

এর পরে, আমরা আমাদের পনির ক্লাস থেকে একটি বস্তু তৈরি করি:

edam =পনির("Edam", "Netherlands")

পরিবর্তনশীল "edam" একটি বস্তু। পনিরের সাথে যুক্ত নাম এডাম এবং এর উৎপত্তি দেশ নেদারল্যান্ডস।

এর পরে, আমাদের get_country() কে কল করা যাক পদ্ধতি:

edam.get_country["জার্মানি"]

এই কোডটি get_country() চালায় পনির ক্লাস থেকে পদ্ধতি। get_country() পদ্ধতি পরীক্ষা করে যে আমাদের "এডাম" বস্তুতে "উৎপত্তি" এর মান "জার্মানি" এর সমান কিনা।

আমাদের কোড চালান এবং দেখুন কি হয়:

ট্রেসব্যাক (সর্বশেষ সাম্প্রতিক কল):ফাইল "main.py", লাইন 14,  edam.get_country["Germany"]-এ TypeError:'method' অবজেক্ট সাবস্ক্রিপ্টযোগ্য নয়

আমাদের কোডে একটি ত্রুটি ঘটে।

সমাধান

আসুন কোডের লাইন বিশ্লেষণ করি যা পাইথন ডিবাগার ভুল হিসাবে চিহ্নিত করেছে:

edam.get_country["জার্মানি"]

কোডের এই লাইনে, আমরা get_country() কল করতে বর্গাকার বন্ধনী ব্যবহার করি পদ্ধতি এটি গ্রহণযোগ্য সিনট্যাক্স নয় কারণ তালিকা থেকে আইটেমগুলি অ্যাক্সেস করতে বর্গাকার বন্ধনী ব্যবহার করা হয়। যেহেতু ফাংশন এবং অবজেক্ট সাবস্ক্রিপ্টযোগ্য নয়, আমরা তাদের কল করার জন্য বর্গাকার বন্ধনী ব্যবহার করতে পারি না।

এই ত্রুটিটি সমাধান করতে, আমাদের অবশ্যই বর্গাকার বন্ধনীগুলিকে কোঁকড়া বন্ধনী দিয়ে প্রতিস্থাপন করতে হবে:

edam.get_country("জার্মানি")

আসুন আমাদের কোড চালাই এবং দেখুন কি হয়:

এডাম জার্মানির নয়। এটি নেদারল্যান্ড থেকে এসেছে।

আমাদের কোড সফলভাবে সঞ্চালিত হয়. আমাদের ফাংশন সমস্ত ক্ষেত্রে কাজ করে কিনা তা নিশ্চিত করতে এডাম "নেদারল্যান্ডস" থেকে এসেছেন কিনা তা পরীক্ষা করার চেষ্টা করুন, আমাদের নির্দিষ্ট করা মানটি পনিরের উৎপত্তি দেশের সমান কিনা:

edam.get_country("নেদারল্যান্ডস")

আমাদের কোড ফিরে আসে:

Edam নেদারল্যান্ড থেকে এসেছে।

আমাদের কোড কাজ করে যদি আমরা নির্দিষ্ট করা মানটি পনিরের উৎপত্তি দেশের সমান হয়।

উপসংহার

"TypeError:'পদ্ধতি' অবজেক্টটি সাবস্ক্রিপ্টযোগ্য নয়" ত্রুটিটি উত্থাপিত হয় যখন আপনি একটি ক্লাসের ভিতরে একটি মেথড কল করার জন্য বর্গাকার বন্ধনী ব্যবহার করেন। এই ত্রুটিটি সমাধান করার জন্য, নিশ্চিত করুন যে আপনি যে পদ্ধতিটি কল করতে চান তার নামের পরে কোঁকড়া বন্ধনী ব্যবহার করে শুধুমাত্র একটি ক্লাসের পদ্ধতিগুলিকে কল করেছেন৷

এখন আপনি পেশাদার কোডারের মতো এই সাধারণ পাইথন ত্রুটিটি সমাধান করতে প্রস্তুত!


  1. TypeError:'undefined' জাভাস্ক্রিপ্টে কোনো বস্তু নয়

  2. পাইথন - iter() পদ্ধতি

  3. পাইথন - cmp() পদ্ধতি

  4. পাইথনে 'নট ইন' অপারেটর কী করে?