निम्नलिखित (टूटी हुई) कोड पर विचार करें:
आयात फंकटूल वर्ग फू (ऑब्जेक्ट): Def __init __ (स्व): def f (a, self, b): प्रिंट a + b self.g = functools.partial (f, 1) x = Foo () xg (2)
< P> मैं क्या करना चाहता हूँ फ़ंक्शन एफ लेता है और आंशिक रूप से इसे लागू करता है, जिसके फलस्वरूप एक फ़ंक्शन g (आत्म, बी)
होता है। मैं इस फ़ंक्शन को एक विधि के रूप में उपयोग करना चाहूंगा, लेकिन यह वर्तमान में काम नहीं करता है और इसके बजाय मुझे त्रुटि मिलती है ट्रेसबैक (सबसे हाल ही में कॉल अंतिम): फ़ाइल "test.py", पंक्ति 8 , & Lt; मॉड्यूल & gt; Xg (2) टाइप एरर: एफ () बिल्कुल 3 तर्क (2 दिए गए) लेता है
करना xg (x, 2)
हालांकि काम करता है, इसलिए यह समस्या दिखती है कि जी को कक्षा की एक विधि के बजाय एक "सामान्य" समारोह माना जाता है क्या XG को किसी फ़ंक्शन के बजाय एक पद्धति (जैसे स्व-पैरामीटर को पारित करना) की तरह व्यवहार करने का एक तरीका है?
यह काम करेगा लेकिन मुझे यकीन नहीं है कि यह वही है जो आप
वर्ग फू (ऑब्जेक्ट) के लिए देख रहे हैं: def __init __ (स्वयं): def f (a, self, b): print a + b Self.g = functools.partial (f, 1, स्वयं) # & lt; = 'स्वयं' को भी पारित करना X = फू () x.g (2)
Comments
Post a Comment