मैंने अत्यधिक मात्रा में ओवरलोडिंग के साथ सॉफ्टवेयर लिखा है, और हाल ही में मुझे उस नीति पर खेद है। मैं यह कहूंगा:
केवल ओवरलोड ऑपरेटर अगर यह प्राकृतिक, अपेक्षित चीज है और इसका कोई दुष्प्रभाव नहीं है।
तो अगर आप एक नया RomanNumeral
वर्ग बनाने के लिए, यह समझ में आता है ओवरलोड जोड़ और घटाव आदि लेकिन यह ओवरलोड नहीं है जब तक कि यह स्वाभाविक है: यह कोई मतलब नहीं है एक Car
या एक Vehicle
वस्तु के लिए जोड़ और घटाव परिभाषित करने के लिए ।
अंगूठे का एक और नियम: ==
अधिभारित न करें। यह वास्तव में परीक्षण करने के लिए बहुत कठिन बनाता है (हालांकि असंभव नहीं है) यदि दो ऑब्जेक्ट समान हैं। मैंने यह गलती की और इसके लिए लंबे समय तक भुगतान किया।
+=
, ++
आदि को अधिभारित करने के लिए, मैं वास्तव में कहूंगा: केवल उस ऑपरेटर के लिए बहुत अधिक मांग होने पर अतिरिक्त ऑपरेटरों को ओवरलोड करें। पांच से कुछ करने का एक तरीका होना आसान है। निश्चित रूप से, इसका मतलब है कि कभी-कभी आपको x += 1
के बजाय x = x + 1
लिखना होगा, लेकिन अगर यह स्पष्ट है तो अधिक कोड ठीक है।
सामान्य रूप से, कई 'फैंसी' सुविधाओं के साथ, यह सोचना आसान है कि आप वास्तव में कुछ नहीं चाहते हैं, सामानों का एक समूह लागू करें, साइड इफेक्ट्स को नोटिस न करें, और उसके बाद इसे बाद में समझें। रूढ़िवादी पक्ष पर एरर।
संपादित करें: मैं ==
ओवरलोडिंग के बारे में एक स्पष्टीकरण नोट जोड़ना चाहता था, क्योंकि ऐसा लगता है कि विभिन्न टिप्पणीकर्ता इसे गलत समझते हैं, और यह मुझे पकड़ा गया है। हां, is
मौजूद है, लेकिन यह एक अलग ऑपरेशन है। मान लें कि मेरे पास ऑब्जेक्ट x
है, जो या तो मेरी कस्टम क्लास से है, या एक पूर्णांक है। मैं देखना चाहता हूं कि x
संख्या 500 है। लेकिन यदि आप x = 500
सेट करते हैं, तो बाद में x is 500
का परीक्षण करें, आपको False
मिलेगा, जिस तरह से पाइथन कैश संख्याएं होती हैं। 50
के साथ, यह True
वापस करेगा। लेकिन आप is
का उपयोग नहीं कर सकते हैं, क्योंकि True
लौटने के लिए x == 500
वापस x
आपकी कक्षा का एक उदाहरण है। भ्रामक? निश्चित रूप से। लेकिन ऑपरेटरों को सफलतापूर्वक अधिभारित करने के लिए आपको यह समझने की आवश्यकता है।
बीटीडब्ल्यू से नापसंद करता है, उन लोगों के लिए निराशाजनक स्ट्रिंग स्वरूपण के लिए% नहीं होने का विचार: यद्यपि पायथन 3 दस्तावेज अप्रचलित के रूप में% का वर्णन करता है, फिर भी यह दस्तावेज है और ऐसा कोई मौका नहीं है कि फीथन 4 में पाइथन-देव में हालिया चर्चाओं के आधार पर यह सुविधा वास्तव में दूर जाएगी। यह 2.6 में पहले से उपलब्ध नई स्ट्रिंग प्रारूप विधि को सीखने और प्यार करने के लिए काफी समय देता है। –
प्रारूप फ़ंक्शन% से कहीं अधिक बेहतर है – Casebash