Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन लापता 1 आवश्यक स्थितीय तर्क:'स्वयं' समाधान

इससे पहले कि आप उनके तरीकों का उपयोग कर सकें, पायथन कक्षाओं को तत्काल, या कॉल करने की आवश्यकता है। यदि आप किसी वर्ग के ऑब्जेक्ट को इंस्टेंट करना भूल जाते हैं और क्लास विधि तक पहुँचने का प्रयास करते हैं, तो आपको यह कहते हुए एक त्रुटि का सामना करना पड़ता है कि "1 आवश्यक स्थितिगत तर्क गुम है:'स्वयं'"।

इस गाइड में, हम इस बारे में बात करते हैं कि इस त्रुटि का क्या अर्थ है और इसे क्यों उठाया जाता है। इसे ठीक करने का तरीका जानने में आपकी मदद करने के लिए हम इस त्रुटि के एक उदाहरण के माध्यम से चलते हैं।

1 आवश्यक स्थितिगत तर्क गुम है:'स्वयं'

स्थितीय तर्क उस डेटा को संदर्भित करते हैं जो किसी फ़ंक्शन में पारित किया जाता है। कक्षा में, प्रत्येक फ़ंक्शन को "स्वयं" मान दिया जाना चाहिए। "स्वयं" का मान जावास्क्रिप्ट में "इस" के समान है। "स्व" एक वर्ग की वस्तु में संग्रहीत डेटा का प्रतिनिधित्व करता है।

जब आप उस क्लास के ऑब्जेक्ट को पहले इंस्टेंट किए बिना क्लास मेथड को कॉल करते हैं, तो आपको एक एरर मिलता है। ऐसा इसलिए है क्योंकि "स्व" का कोई मूल्य नहीं है जब तक कि किसी वस्तु को तत्काल नहीं किया जाता है।

सबसे आम गलतियाँ जो "लापता 1 आवश्यक स्थितीय तर्क:'स्व'" त्रुटि का कारण बनती हैं:

  • कक्षा की किसी वस्तु को तत्काल करना भूल जाना
  • कक्षा को तत्काल करने के लिए गलत सिंटैक्स का उपयोग करना

आइए इनमें से प्रत्येक कारण पर व्यक्तिगत रूप से विचार करें।

कारण #1:किसी वस्तु को त्वरित करना भूल जाना

क्लास में किसी मेथड को एक्सेस करने से पहले ऑब्जेक्ट को इंस्टेंट किया जाना चाहिए।

एक वीडियो गेम में नायक के बारे में जानकारी संग्रहीत करने वाले वर्ग को परिभाषित करें:

81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।

बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।

क्लास हीरो:def __init__(self, name, player_type):self.name =name self.player_type =player_type

इसके बाद, हम अपनी कक्षा में एक फ़ंक्शन जोड़ते हैं। कक्षाओं के अंदर के कार्यों को विधियाँ कहा जाता है। यह विधि एक खिलाड़ी के नाम और उनके खिलाड़ी के प्रकार को प्रिंट करती है:

def show_player(self):प्रिंट ("खिलाड़ी का नाम:" + self.name) प्रिंट ("खिलाड़ी प्रकार:" + self.player_type)

हमारी कक्षा तक पहुँचने का प्रयास करें ताकि हम एक खिलाड़ी बना सकें:

ल्यूक =Hero.show_player()

हमने एक ऑब्जेक्ट बनाया है जो "ल्यूक" चर को सौंपा गया है। यह वस्तु हीरो वर्ग से ली गई है। हम show_player() . को कॉल करते हैं खिलाड़ी के बारे में जानकारी दिखाने की विधि।

आइए अपना कोड पूरी तरह से चलाएं और देखें कि क्या होता है:

ट्रेसबैक (सबसे हालिया कॉल अंतिम):फ़ाइल "main.py", पंक्ति 10, <मॉड्यूल> में 

हमारा कोड विफल रहता है। ऐसा इसलिए है क्योंकि हमने हीरो के ऑब्जेक्ट को इंस्टेंट नहीं किया है। Hero.show_player() काम नहीं करता है क्योंकि हमने ऐसा हीरो नहीं बनाया है जिसकी जानकारी प्रदर्शित की जा सके।

इस त्रुटि को हल करने के लिए, हम show_player() . को कॉल करने से पहले किसी ऑब्जेक्ट को इंस्टेंट करते हैं :

ल्यूक =हीरो ("ल्यूक", "मैज") luke.show_player()

हमारा कोड फिर से चलाएँ:

खिलाड़ी का नाम:ल्यूकप्लेयर प्रकार:दाना

हमारा कोड सफलतापूर्वक चलता है! हमने पहले "ल्यूक" नामक एक चर घोषित किया है जो ल्यूक नामक खिलाड़ी के बारे में जानकारी संग्रहीत करता है। ल्यूक का खिलाड़ी प्रकार "मैज" है। अब जब हमने उस ऑब्जेक्ट को इंस्टेंट कर दिया है, तो हम show_player() . को कॉल कर सकते हैं विधि।

कारण #2:किसी कक्षा को गलत तरीके से त्वरित करना

"गायब 1 आवश्यक स्थितिगत तर्क:'स्वयं'" त्रुटि तब हो सकती है जब आप किसी वर्ग को गलत तरीके से त्वरित करते हैं। निम्नलिखित कोड पर विचार करें:

ल्यूक =Heroluke.show_player()

जबकि यह कोड पिछले उदाहरण से हमारे समाधान के समान है, यह गलत है। ऐसा इसलिए है क्योंकि हमने हीरो शब्द के बाद कोई कोष्ठक नहीं जोड़ा है। इन कोष्ठकों को याद करने से, हमारा प्रोग्राम यह नहीं जानता है कि हम एक क्लास को इंस्टेंट करना चाहते हैं।

हीरो के बाद कोष्ठक जोड़कर और आवश्यक तर्क, "नाम" और "player_type" निर्दिष्ट करके इस समस्या को हल करें:

ल्यूक =हीरो ("ल्यूक", "मैज") luke.show_player()

हमारा कोड अब सफलतापूर्वक चलता है और हमारे खिलाड़ी के बारे में जानकारी देता है:

खिलाड़ी का नाम:ल्यूकप्लेयर प्रकार:दाना

निष्कर्ष

"लापता 1 आवश्यक स्थितिगत तर्क:'स्व'" त्रुटि तब उठाई जाती है जब आप किसी वर्ग विधि को कॉल करने से पहले किसी वर्ग की किसी वस्तु को तत्काल नहीं करते हैं। यह त्रुटि तब भी उठाई जाती है जब आप किसी वर्ग को गलत तरीके से त्वरित करते हैं।

इस त्रुटि को हल करने के लिए, सुनिश्चित करें कि आप उस वर्ग के किसी भी तरीके तक पहुँचने का प्रयास करने से पहले किसी वर्ग की किसी वस्तु को तुरंत चालू कर दें। फिर, यह सुनिश्चित करने के लिए जांचें कि आप किसी ऑब्जेक्ट को इंस्टेंट करने के लिए सही सिंटैक्स का उपयोग करते हैं।

अब आप एक विशेषज्ञ पायथन डेवलपर की तरह इस सामान्य त्रुटि को हल करने के लिए तैयार हैं!


  1. पायथन में विरासत

    इस लेख में, हम पायथन 3.x में इनहेरिटेंस और एक्सटेंडिंग क्लासेस सीखेंगे। या पहले। वंशानुक्रम वास्तविक दुनिया के संबंधों का अच्छी तरह से प्रतिनिधित्व करता है, पुन:प्रयोज्य प्रदान करता है और पारगमन का समर्थन करता है। यह तेजी से विकास समय, आसान रखरखाव और विस्तार में आसान प्रदान करता है। वंशानुक्रम को

  1. पायथन में स्ट्रिंग टेम्पलेट क्लास?

    एक साधारण टेम्पलेट स्ट्रिंग बनाने के लिए पायथन स्ट्रिंग टेम्प्लेट क्लास का उपयोग किया जाता है। पायथन टेम्प्लेट स्ट्रिंग्स को पहली बार पायथन 2.4 में पेश किया गया था। पायथन स्ट्रिंग टेम्प्लेट टेम्प्लेट स्ट्रिंग्स को इसके कंस्ट्रक्टर के तर्क के रूप में पास करके बनाया गया है। जहां स्ट्रिंग स्वरूपण ऑपरेट

  1. पायथन में क्लास मेथड बनाम स्टैटिक मेथड

    पायथन में क्लास मेथड एक मेथड है, जो क्लास से बंधी होती है लेकिन उस क्लास की ऑब्जेक्ट नहीं। स्थैतिक विधियां भी समान हैं लेकिन कुछ बुनियादी अंतर हैं। वर्ग विधियों के लिए, हमें @classmethod डेकोरेटर निर्दिष्ट करने की आवश्यकता है, और स्थिर विधि के लिए @staticmethod डेकोरेटर का उपयोग किया जाता है। क्लास