@jolvi, @ArundasR, और अन्य के साथ सहमत, चेतावनी एक सदस्य समारोह पर होती है जो self
का उपयोग नहीं करती है।
क्या आप वाकई PyCharm गलत है, कि समारोह एक @staticmethod
नहीं होना चाहिए, और यदि आप शून्य चेतावनी महत्व देते हैं, तो आप इस एक दूर दो अलग अलग तरीकों जाना कर सकते हैं कर रहे हैं:
वर्कअराउंड # 1
def bar(self):
self.is_not_used()
doing_something_without_self()
def is_not_used(self):
pass
वर्कअराउंड # 2[धन्यवाद @DavidPärsson]
# noinspection PyMethodMayBeStatic
def bar(self):
doing_something_without_self()
मेरे लिए यह एप्लिकेशन था (कारण मैं @staticmethod का उपयोग नहीं कर सका) प्रोटोकॉल उपप्रकार फ़ील्ड का जवाब देने के लिए हैंडलर फ़ंक्शंस की एक तालिका बनाने में था। सभी हैंडलर को पाठ्यक्रम का एक ही रूप होना चाहिए (स्थिर या nonstatic)। लेकिन कुछ उदाहरण के साथ कुछ भी नहीं किया था। अगर मैंने उन स्थिरों को बनाया है तो मुझे "TypeError: 'staticmethod' ऑब्जेक्ट कॉल करने योग्य नहीं होगा"।
ओपी के कर्कश के समर्थन में, सुझाव देते हुए कि आप जब भी कर सकते हैं staticmethod जोड़ते हैं, तो principle के खिलाफ चला जाता है कि इसे और अधिक बनाने के लिए कोड को कम प्रतिबंधित करना आसान है - एक विधि स्थैतिक इसे अब कम प्रतिबंधित बनाता है, उसमें आप example.f() के बजाय class.f() को कॉल कर सकते हैं।
अनुमान क्यों इस चेतावनी मौजूद है के रूप में:
- यह advertises staticmethod। यह डेवलपर्स को उस चीज़ के बारे में जागरूक करता है जिसका वे इरादा कर सकते हैं।
- @ जॉनवॉरल के अंक के रूप में, यह आपका ध्यान प्राप्त करता है जब स्वयं अनजाने में फ़ंक्शन के को छोड़ दिया गया था।
- ऑब्जेक्ट मॉडल पर पुनर्विचार करने के लिए यह एक क्यू है; शायद इस वर्ग में फ़ंक्शन से संबंधित नहीं है।
स्रोत
2015-08-03 13:27:07
क्या आपने "अधिक ..." पर क्लिक किया था? क्या आप विधि के अंदर कहीं भी 'स्वयं' का संदर्भ देते हैं? (यदि सवाल वास्तव में है "क्यों PyCharm के डिजाइनरों ने इसे इस तरह डिजाइन किया ... आपको उनसे पूछना होगा, एसओ नहीं ...) – geoffspear
@Wooble: विधि के एकल लाइन कार्यान्वयन के रूप में' वापसी 1' है "अधिक" में कुछ भी उपयोगी नहीं है – zerkms