কম্পিউটার

Python অনুপস্থিত 1 প্রয়োজনীয় অবস্থানগত যুক্তি:'স্ব' সমাধান

আপনি তাদের পদ্ধতিগুলি অ্যাক্সেস করতে পারার আগে পাইথন ক্লাসগুলিকে তাত্ক্ষণিক বা কল করতে হবে। আপনি যদি একটি ক্লাসের একটি বস্তুকে ইনস্ট্যান্টিয়েট করতে ভুলে যান এবং একটি ক্লাস পদ্ধতি অ্যাক্সেস করার চেষ্টা করেন, তাহলে আপনি "1টি প্রয়োজনীয় অবস্থানগত যুক্তি অনুপস্থিত:'self'" বলে একটি ত্রুটির সম্মুখীন হন।

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

1টি প্রয়োজনীয় অবস্থানগত যুক্তি অনুপস্থিত:'self'

অবস্থানগত যুক্তি একটি ফাংশনে পাস করা তথ্য বোঝায়। একটি ক্লাসে, প্রতিটি ফাংশনকে অবশ্যই "স্ব" মান দিতে হবে। "self" এর মান জাভাস্ক্রিপ্টে "এই" এর মত। "self" একটি ক্লাসের একটি বস্তুতে সংরক্ষিত তথ্য উপস্থাপন করে।

আপনি যখন সেই ক্লাসের একটি বস্তুকে প্রথমে ইনস্ট্যান্টিয়েট না করে একটি ক্লাস পদ্ধতি কল করেন, আপনি একটি ত্রুটি পান। এর কারণ হল "স্ব" এর কোনো মূল্য নেই যতক্ষণ না কোনো বস্তুকে ইনস্ট্যান্ট করা হয়।

"নিখোঁজ 1টি প্রয়োজনীয় অবস্থানগত যুক্তি:'স্ব'" ত্রুটির কারণ হওয়া সবচেয়ে সাধারণ ভুলগুলি হল:

  • একটি ক্লাসের একটি বস্তুকে ইনস্ট্যান্টিয়েট করতে ভুলে যাওয়া
  • একটি ক্লাস ইনস্ট্যান্ট করার জন্য ভুল সিনট্যাক্স ব্যবহার করা

আসুন পৃথকভাবে এই প্রতিটি কারণের মধ্য দিয়ে চলুন।

কারণ #1:একটি বস্তুকে ইনস্ট্যান্টিয়েট করতে ভুলে যাওয়া

আপনি একটি ক্লাসে একটি পদ্ধতি অ্যাক্সেস করতে পারার আগে একটি বস্তুকে অবশ্যই তাৎক্ষণিক হতে হবে।

একটি ক্লাস সংজ্ঞায়িত করুন যা একটি ভিডিও গেমে একজন নায়ক সম্পর্কে তথ্য সঞ্চয় করে:

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

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

class Hero:
	def __init__(self, name, player_type):
		self.name = name
		self.player_type = player_type

এর পরে, আমরা আমাদের ক্লাসে একটি ফাংশন যোগ করি। ক্লাসের ভিতরের ফাংশনকে মেথড বলে। এই পদ্ধতিটি একজন খেলোয়াড়ের নাম এবং তাদের খেলোয়াড়ের ধরন প্রিন্ট করে:

def show_player(self):
		print("Player Name: " + self.name)
		print("Player Type: " + self.player_type)

আমাদের ক্লাস অ্যাক্সেস করার চেষ্টা করুন যাতে আমরা একটি প্লেয়ার তৈরি করতে পারি:

luke = Hero.show_player()

আমরা একটি অবজেক্ট তৈরি করেছি যা "লুক" ভেরিয়েবলের সাথে বরাদ্দ করা হয়েছে। এই বস্তুটি হিরো ক্লাস থেকে উদ্ভূত হয়েছে। আমরা show_player() কে কল করি প্লেয়ার সম্পর্কে তথ্য দেখানোর পদ্ধতি।

আসুন আমাদের কোডটি সম্পূর্ণভাবে চালান এবং দেখুন কি হয়:

Traceback (most recent call last):
  File "main.py", line 10, in <module>
	luke = Hero.show_player()
TypeError: show_player() missing 1 required positional argument: 'self'

আমাদের কোড ব্যর্থ হয়. এর কারণ আমরা হিরোর একটি বস্তুকে ইনস্ট্যান্ট করিনি। Hero.show_player() কাজ করে না কারণ আমরা এমন একটি হিরো তৈরি করিনি যার তথ্য প্রদর্শন করা যেতে পারে।

এই ত্রুটিটি সমাধান করার জন্য, আমরা প্রথমে show_player() কল করার আগে একটি বস্তুকে ইনস্ট্যান্টিয়েট করি :

luke = Hero("Luke", "Mage")
luke.show_player()

আমাদের কোড আবার চালান:

Player Name: Luke
Player Type: Mage

আমাদের কোড সফলভাবে সঞ্চালিত হয়! আমরা প্রথমে "লুক" নামক একটি ভেরিয়েবল ঘোষণা করেছি যা লুক নামক একজন খেলোয়াড় সম্পর্কে তথ্য সংরক্ষণ করে। লুকের প্লেয়ারের ধরন হল "Mage"। এখন যেহেতু আমরা সেই বস্তুটিকে ইনস্ট্যান্টিয়েট করেছি, আমরা show_player() কল করতে পারি পদ্ধতি।

কারণ #2:ভুলভাবে একটি ক্লাস ইনস্ট্যান্টিয়েটিং

"অনুপস্থিত 1টি প্রয়োজনীয় অবস্থানগত যুক্তি:'স্ব'" ত্রুটি ঘটতে পারে যখন আপনি ভুলভাবে একটি ক্লাস ইনস্ট্যান্টিয়েট করেন। নিম্নলিখিত কোড বিবেচনা করুন:

luke = Hero
luke.show_player()

যদিও এই কোডটি শেষ উদাহরণ থেকে আমাদের সমাধানের অনুরূপ, এটি ভুল। কারণ আমরা Hero শব্দের পরে কোনো বন্ধনী যোগ করিনি। এই বন্ধনীগুলি মিস করে, আমাদের প্রোগ্রাম জানে না যে আমরা একটি ক্লাস ইনস্ট্যান্ট করতে চাই।

Hero এর পরে বন্ধনী যোগ করে এবং প্রয়োজনীয় আর্গুমেন্ট, “নাম” এবং “player_type” উল্লেখ করে এই সমস্যার সমাধান করুন:

luke = Hero("Luke", "Mage")
luke.show_player()

আমাদের কোড এখন সফলভাবে চলে এবং আমাদের প্লেয়ার সম্পর্কে তথ্য প্রদান করে:

Player Name: Luke
Player Type: Mage

উপসংহার

"অনুপস্থিত 1টি প্রয়োজনীয় অবস্থানগত যুক্তি:'self'" ত্রুটি উত্থাপিত হয় যখন আপনি একটি ক্লাস পদ্ধতি কল করার আগে একটি ক্লাসের একটি বস্তুকে ইনস্ট্যান্টিয়েট না করেন। এই ত্রুটিটিও উত্থাপিত হয় যখন আপনি ভুলভাবে একটি ক্লাস ইনস্ট্যান্টিয়েট করেন।

এই ত্রুটিটি সমাধান করার জন্য, নিশ্চিত করুন যে আপনি সেই ক্লাসের যেকোন পদ্ধতি অ্যাক্সেস করার চেষ্টা করার আগে আপনি প্রথমে একটি ক্লাসের একটি বস্তুকে ইনস্ট্যান্টিয়েট করেছেন। তারপরে, আপনি একটি বস্তুকে ইনস্ট্যান্টিয়েট করতে সঠিক সিনট্যাক্স ব্যবহার করেছেন তা নিশ্চিত করতে পরীক্ষা করুন।

এখন আপনি একজন বিশেষজ্ঞ পাইথন বিকাশকারীর মতো এই সাধারণ ত্রুটিটি সমাধান করতে প্রস্তুত!


  1. ক্লাসমেথ() পাইথনে

  2. পাইথনে উত্তরাধিকার

  3. পাইথনে স্ট্রিং টেমপ্লেট ক্লাস?

  4. পাইথনে ক্লাস পদ্ধতি বনাম স্ট্যাটিক পদ্ধতি