क्या सुपर() का मतलब staticmethods के साथ नहीं किया जाना चाहिए?सुपर() और @staticmethod इंटरैक्शन
जब मैं मैं त्रुटि
Traceback (most recent call last):
File "asdf.py", line 13, in <module>
a = Second.getlist()
File "asdf.py", line 9, in getlist
l = super(Second).getlist()
AttributeError: 'super' object has no attribute 'getlist'
निम्नलिखित हो, तो मैं सुपर (करने के लिए classmethods को staticmethods बदल सकते हैं और वर्ग उदाहरण पारित), चीजों को ठीक से काम की तरह
class First(object):
@staticmethod
def getlist():
return ['first']
class Second(First):
@staticmethod
def getlist():
l = super(Second).getlist()
l.append('second')
return l
a = Second.getlist()
print a
कुछ प्रयास करें। क्या मैं यहां सुपर (टाइप) गलत तरीके से फोन कर रहा हूं या क्या मुझे कुछ याद आ रही है?
क्या यह पाइथन 3 में कोई अलग है, जहां किसी भी तर्क के बिना 'सुपर()' नियमित तरीके से इसे कॉल करने का सामान्य तरीका है? 'Super()। Foo() 'को कॉल करते समय मुझे Python3 में एक ही समस्या थी। – gerrit
@gerrit: पायथन 3 का शून्य-तर्क 'सुपर() 'केवल कक्षा या उदाहरण विधियों में काम करता है। यह उस जादू के कारण है जो यह निर्धारित करने के लिए उपयोग करता है कि किस वर्ग में इसे परिभाषित किया जा रहा है। स्थिर तरीकों के भीतर (जैसे नियमित रूप से, मॉड्यूल-स्तरीय फ़ंक्शंस में), आपको अभी भी दो स्पष्ट तर्कों की आवश्यकता है। (पाइथन 3 में एकल-तर्क फ़ॉर्म अभी भी अनबाउंड है) –