मैं DiveIntoPython माध्यम से जा रहा है और इस में आए किया गया था:पायथन में कोई कन्स्ट्रक्टर अधिभार नहीं - नुकसान?
जावा और PowerBuilder समर्थन समारोह तर्क सूची से अधिक भार, यानी एक वर्ग में एक ही नाम के साथ कई तरीकों लेकिन तर्कों की अलग नंबर, या तर्क हो सकता है विभिन्न प्रकार के। अन्य भाषाएं (सबसे विशेष रूप से पीएल/एसक्यूएल) तर्क नाम द्वारा फ़ंक्शन ओवरलोडिंग का भी समर्थन करती है; यानी एक वर्ग में नाम और उसी प्रकार के तर्कों की एक ही संख्या के साथ कई विधियां हो सकती हैं लेकिन अलग-अलग तर्क नाम। पाइथन इन में से कोई भी समर्थन नहीं करता है; इसमें फ़ंक्शन ओवरलोडिंग का कोई रूप नहीं है। विधियों को पूरी तरह से उनके नाम से परिभाषित किया गया है, और दिए गए नाम के साथ प्रति वर्ग केवल एक विधि हो सकती है। तो यदि किसी वंश वर्ग में
__init__
विधि है, तो यह हमेशा पूर्वजों__init__
विधि को ओवरराइड करता है, भले ही वंशज इसे विभिन्न तर्क सूची के साथ परिभाषित करता हो। और एक ही नियम किसी अन्य विधि पर लागू होता है।
यह एक बड़ा नुकसान यह है कि एक उपवर्ग के __init__
विधि हमेशा एक सुपर क्लास के __init__
विधि को पार कर जाएगी नहीं है? तो अगर मैं कुछ चर आरंभ और एक वर्ग class1
में कुछ कार्यों बुला रहा हूँ रों चर और class2
के __init__
में उन कार्यों फोन के __init__
, तो मैं एक उपवर्ग इसके बारे में class2(class1)
निकाले जाते हैं, मैं class1
के सभी reinitialize करना होगा ' ?
मुझे पूरा यकीन है कि मैं यह सब गलत समझ रहा हूं, इसलिए अगर कोई इसे स्पष्ट करता है तो यह बहुत अच्छा होगा।
और यदि आप '* args'/'** kwdargs **' विधि का उपयोग विशिष्ट कार्यों में कुछ प्रेषण करने के लिए करते हैं, तो आपको एहसास होता है कि वास्तव में अलग-अलग नामों को अलग-अलग करने के लिए वास्तव में चोट नहीं होती है :) –
मुझे सुपर –
@tom के साथ त्रुटि त्रुटि मैंने निश्चित रूप से ऐसा किया है, क्या यह एक नया शब्द है? मैं http://mathcs.holycross.edu/~kwalsh/python/ पर कोशिश कर रहा हूं क्योंकि मेरे पास इस मशीन में पाइथन नहीं है –