समान प्रश्न (को Python2 के साथ संबंधित: Python: check if method is static)python3: जाँच करता है, तो विधि स्थिर है
वर्ग परिभाषा निम्नलिखित पर विचार करने देता है:
class A:
def f(self):
return 'this is f'
@staticmethod
def g():
return 'this is g'
अजगर 3 में नहीं है अब और कोई instancemethod
, सब कुछ समारोह है, इसलिए पायथन 2 से संबंधित जवाब अब और काम नहीं करेगा।
जैसा कि मैंने कहा था, सब कुछ समारोह है, इसलिए हम A.f(0)
कॉल कर सकते हैं, लेकिन निश्चित रूप से हम कॉल नहीं कर सकते A.f()
(तर्क missmatch)। लेकिन अगर हम a=A()
उदाहरण देते हैं और हम a.f()
पर कॉल करते हैं तो पाइथन A.f
self
को पहले तर्क के रूप में कार्य करता है। कॉलिंग a.g()
इसे भेजने या self
पर कैप्चर करने से रोकती है - इसलिए यह जांचने का एक तरीका होना चाहिए कि यह staticmethod है या नहीं।
तो क्या हम static
के रूप में घोषित किए जाने पर पाइथन 3 में जांच सकते हैं या नहीं?
मैं पूछ सकता हूँ क्यों तुम यह करने के लिए कोशिश कर रहे हैं उत्तर के आधार पर निम्नलिखित? –
बेशक, मैं अपना खुद का प्लगइन ढांचा बना रहा हूं और मैं कुछ इंटरफ़ेस घोषणाओं का निरीक्षण करना चाहता हूं और मुझे यह जानना अच्छा लगेगा कि कुछ staticmethod के रूप में घोषित किया गया था या नहीं :) –