मुझे दस्तावेज़ीकरण के उद्देश्य के अलावा उनमें अधिक लाभ नहीं मिल रहा है। पाइथन मुझे चेतावनी देगा अगर मैं एबीसी में परिभाषित एक विधि को लागू करना भूल जाता हूं लेकिन चूंकि मैं अपने ऑब्जेक्ट्स द्वारा अपनी ऑब्जेक्ट्स का संदर्भ नहीं देता हूं, इसलिए मैं अपने इंटरफेस में विधियों की घोषणा करना भूल सकता हूं और मैं इसे नोटिस नहीं करूँगा। क्या इंटरफ़ेस-जैसे व्यवहार के लिए एबीसी का उपयोग करना आम बात है?क्या यह इंटरफेस/सार आधार वर्गों का उपयोग करने के लिए पाइथोनिक है?
उत्तर
व्यक्तिगत रूप से, मुझे पुस्तकालयों या अन्य कोड लिखते समय अमूर्त कक्षाएं सबसे उपयोगी होती हैं जो एक डेवलपर और दूसरे के बीच इंटरफेस करती हैं।
सांख्यिकीय रूप से टाइप की गई भाषाओं के फायदों में से एक यह है कि जब आप गलत प्रकार का उपयोग करते हैं, तो यह जल्दी विफल रहता है (अक्सर, संकलन समय के रूप में जल्दी)। एबीसी पाइथन को गतिशील टाइपिंग के साथ एक ही लाभ प्राप्त करने की अनुमति देता है।
यदि आपका लाइब्रेरी कोड बतख एक ऐसी वस्तु का प्रकार है जिसमें एक महत्वपूर्ण विधि की कमी है, तो संभवतः उस विधि की आवश्यकता होने तक यह असफल नहीं होगा (जो महत्वपूर्ण समय ले सकता है या संसाधनों को एक असंगत स्थिति में डाल सकता है, इसका उपयोग कैसे किया जाता है)। हालांकि, एबीसी के साथ, एक गायब विधि या तो सही एबीसी का उपयोग नहीं कर रही है (और instanceof
चेक में विफल रहता है) या एबीसी द्वारा "मान्य" है।
इसके अतिरिक्त, एबीसी सचमुच, और विचारधारा के माध्यम से इंटरफेस को दस्तावेज करने के लिए उत्कृष्ट तरीके के रूप में कार्य करता है।
AFAIK, मानक अभ्यास NotImplementedError
अपूर्ण पूरक विधियों के लिए अपवाद का उपयोग करना है।
लेकिन मेरा मानना है कि एबीसी को पाइथोनिक माना जा सकता है, क्योंकि अब यह part of the Python standard library है।
- 1. shared_ptr का उपयोग करने के लिए, क्या यह सुरक्षित है?
- 2. tuples unpack करने के लिए पाइथोनिक तरीका क्या है?
- 3. निजी चर का उपयोग करने के लिए पाइथोनिक तरीका क्या है?
- 4. क्या यह फ़ंक्शन तर्क प्रकारों की जांच करने के लिए पाइथोनिक है?
- 5. चर घोषित करने का पाइथोनिक तरीका क्या है?
- 6. कक्षाओं को कई वर्गों में विभाजित करने के लिए सबसे पाइथोनिक तरीका
- 7. क्या यह पाइथोनिक को ऊन के रूप में बूल का उपयोग करना है?
- 8. एंडियननेस निर्धारित करने का सबसे पाइथोनिक तरीका क्या है?
- 9. अमूर्त आधार वर्गों में ऑपरेटरों को अधिभारित करने का उचित तरीका क्या है?
- 10. क्या यह पॉलिमॉर्फिज्म का उचित उपयोग है? (?)
- 11. आधार वर्गों का शून्य आकार क्यों हो सकता है?
- 12. क्या यह एकाधिक संग्रह लोड करने के लिए ThenFetch() का उपयोग करने का सही तरीका है?
- 13. सबक्लास के उप-वर्गों के लिए भेदभावकर्ता का उपयोग
- 14. क्या यह उपयोग करने के लिए एक NSString उदाहरण के खिलाफ isKindOfClass का उपयोग सुरक्षित है?
- 15. क्या यह इडियोटिक पाइथन घटना हैंडलर कॉलबैक के लिए एक अमूर्त वर्ग का उपयोग करने के लिए है?
- 16. क्या यह प्रति उपयोगकर्ता आधार पर सक्रिय संसाधन HTTP प्रमाणीकरण सेट करने के लिए सुरक्षित है?
- 17. क्या यह शून्य शैली के लिए NullPointerException का उपयोग करने के लिए खराब शैली है?
- 18. क्या यह sqlalchemy-migrate का उपयोग करने लायक है?
- 19. आश्रित आधार वर्गों से प्रकारों तक पहुंच
- 20. एल्गोरिदम के प्रयोजनों के लिए लॉगरिदम का आधार क्या है?
- 21. का उपयोग जावा वर्गों Grails
- 22. * यह करने के लिए असाइनमेंट क्या करता है (* यह = वैल)?
- 23. क्या यह पाइथन में अनंत लूप के लिए अनंत रिकर्सन का उपयोग करने का पाप है?
- 24. क्या यह सब कुछ के लिए h: outputText का उपयोग करने का सुझाव दिया गया है?
- 25. पाइथोनिक वे आरंभ करने के लिए (कॉम्प्लेक्स) स्टेटिक डेटा सदस्य
- 26. क्या पाइथन में एक ज्ञापन सजावट के लिए कीवर्ड तर्कों का समर्थन करने के लिए एक पाइथोनिक तरीका है?
- 27. पैकेज से मॉड्यूल आयात करने के लिए पाइथोनिक तरीका
- 28. संकलन समय पर विशिष्ट आधार वर्गों के एकाधिक विरासत को रोकने के लिए संभव है?
- 29. कई पुनरावृत्तियों पर उपयोग के लिए एकाधिक regexes को परिभाषित करने के पाइथोनिक और कुशल तरीके
- 30. मेरे लिए Moq का उपयोग करने के लिए, क्या मेरे सभी वर्गों को एक इंटरफ़ेस लागू करना है?