@Jolvi, @ArundasR, और अन्य लोगों से सहमत, चेतावनी एक सदस्य फ़ंक्शन पर होती है जो उपयोग नहीं करता है self
।
यदि आप सुनिश्चित हैं कि PyCharm गलत है, तो फ़ंक्शन एक नहीं होना चाहिए @staticmethod
, और यदि आप शून्य चेतावनियों को महत्व देते हैं, तो आप इसे दो अलग-अलग तरीकों से दूर कर सकते हैं:
वर्कअराउंड # 1
def bar(self):
self.is_not_used()
doing_something_without_self()
def is_not_used(self):
pass
समाधान # 2 [धन्यवाद @ डेविडसन ]
# noinspection PyMethodMayBeStatic
def bar(self):
doing_something_without_self()
मेरे पास इसके लिए आवेदन (कारण मैं @staticmethod का उपयोग नहीं कर सका) एक प्रोटोकॉल उपप्रकार क्षेत्र का जवाब देने के लिए हैंडलर फ़ंक्शन की एक तालिका बनाने में था। सभी संचालकों को समान रूप से पाठ्यक्रम (स्थिर या गैर-स्थिर) होना चाहिए था। लेकिन कुछ उदाहरण के साथ कुछ भी करने के लिए नहीं हुआ। अगर मैंने उन स्थैतिक को बनाया, तो मुझे "TypeError: 'staticmethod' ऑब्जेक्ट कॉल करने योग्य नहीं है"।
ओपी की अड़चन के समर्थन में, आपको सुझाव है कि जब भी आप कर सकते हैं, स्टेथमेथोड को जोड़ दें, इस सिद्धांत के खिलाफ जाता है कि कोड को बाद में कम प्रतिबंधक बनाना आसान है, इसे और अधिक बनाने के लिए - एक विधि को स्थिर बनाने से यह अब कम प्रतिबंधात्मक हो जाता है, इसमें आप कॉल class.f () के बजाय example.f () करें।
लगता है कि क्यों यह चेतावनी मौजूद है:
- यह staticmethod का विज्ञापन करता है । यह डेवलपर्स को कुछ ऐसी चीज़ों से अवगत कराता है जो उन्होंने अच्छी तरह से इरादा किया हो।
- जैसा कि @ JohnWorrall बताते हैं, जब आपका ध्यान इस पर जाता है स्वयं अनजाने में फ़ंक्शन से बाहर निकल जाता था ।
- यह ऑब्जेक्ट मॉडल पर पुनर्विचार करने के लिए एक क्यू है; हो सकता है कि फ़ंक्शन इस वर्ग में बिल्कुल न हो।
self
विधि के अंदर कहीं भी संदर्भ देते हैं ? (यदि वास्तव में सवाल यह है कि "PyCharm के डिजाइनरों ने इसे इस तरह क्यों डिज़ाइन किया ... आपको उनसे पूछना होगा, न कि SO ...)