2011-11-28 16 views
6

मैं वर्तमान में एक वर्ग बहुपद कहा जाता है, प्रारंभ इस तरह दिखता है:अजगर उपवर्गों

def __init__(self, *termpairs): 
    self.termdict = dict(termpairs) 

मैं कुंजी एक्स्पोनेंट्स और संबद्ध मानों गुणांक हैं बनाकर एक बहुपद बना रहा हूं।

d1 = Polynomial((5,1), (3,-4), (2,10)) 

जो इतनी तरह एक शब्दकोश बनाता है::

{2: 10, 3: -4, 5: 1} 

अब, मैं द्विघात बुलाया बहुपद वर्ग का एक उपवर्ग बनाना चाहते हैं इस वर्ग का एक उदाहरण बनाने के लिए, आप इस प्रकार दर्ज करें। मैं क्वाड्रैटिक क्लास कन्स्ट्रक्टर में बहुपद वर्ग कन्स्ट्रक्टर को कॉल करना चाहता हूं, हालांकि मुझे यह सुनिश्चित नहीं है कि यह कैसे करें। मैंने जो कोशिश की है वह है:

class Quadratic(Polynomial): 
def __init__(self, quadratic, linear, constant): 
    Polynomial.__init__(self, quadratic[2], linear[1], constant[0]) 

लेकिन मुझे त्रुटियां मिलती हैं, किसी को भी कोई सुझाव है? मुझे लगता है कि जब मैं बहुपद वर्ग कन्स्ट्रक्टर कहता हूं तो मैं गलत पैरामीटर का उपयोग कर रहा हूं।

उत्तर

10

आप शायद चाहते

class Quadratic(Polynomial): 
    def __init__(self, quadratic, linear, constant): 
     Polynomial.__init__(self, (2, quadratic), (1, linear), (0, constant)) 
+0

धन्यवाद यह काम करता है, मैंने संख्याओं को गलत जगह पर रखा है। – me45

15

तुम भी बजाय निर्माता सीधे का उपयोग करने का super() उपयोग करना चाहिए।

class Quadratic(Polynomial): 
    def __init__(self, quadratic, linear, constant): 
     super(Quadratic, self).__init__(quadratic[2], linear[1], constant[0]) 
+0

क्या आप विस्तार कर सकते हैं कि यह बेहतर क्यों है? – kelorek

+1

समझ गया। अधिक जानकारी के लिए इस पोस्ट को देखें: http://stackoverflow.com/questions/576169/understanding-python-super-and-init-methods – kelorek