2011-03-12 8 views
11

मुझे दस्तावेज़ीकरण के उद्देश्य के अलावा उनमें अधिक लाभ नहीं मिल रहा है। पाइथन मुझे चेतावनी देगा अगर मैं एबीसी में परिभाषित एक विधि को लागू करना भूल जाता हूं लेकिन चूंकि मैं अपने ऑब्जेक्ट्स द्वारा अपनी ऑब्जेक्ट्स का संदर्भ नहीं देता हूं, इसलिए मैं अपने इंटरफेस में विधियों की घोषणा करना भूल सकता हूं और मैं इसे नोटिस नहीं करूँगा। क्या इंटरफ़ेस-जैसे व्यवहार के लिए एबीसी का उपयोग करना आम बात है?क्या यह इंटरफेस/सार आधार वर्गों का उपयोग करने के लिए पाइथोनिक है?

उत्तर

6

व्यक्तिगत रूप से, मुझे पुस्तकालयों या अन्य कोड लिखते समय अमूर्त कक्षाएं सबसे उपयोगी होती हैं जो एक डेवलपर और दूसरे के बीच इंटरफेस करती हैं।

सांख्यिकीय रूप से टाइप की गई भाषाओं के फायदों में से एक यह है कि जब आप गलत प्रकार का उपयोग करते हैं, तो यह जल्दी विफल रहता है (अक्सर, संकलन समय के रूप में जल्दी)। एबीसी पाइथन को गतिशील टाइपिंग के साथ एक ही लाभ प्राप्त करने की अनुमति देता है।

यदि आपका लाइब्रेरी कोड बतख एक ऐसी वस्तु का प्रकार है जिसमें एक महत्वपूर्ण विधि की कमी है, तो संभवतः उस विधि की आवश्यकता होने तक यह असफल नहीं होगा (जो महत्वपूर्ण समय ले सकता है या संसाधनों को एक असंगत स्थिति में डाल सकता है, इसका उपयोग कैसे किया जाता है)। हालांकि, एबीसी के साथ, एक गायब विधि या तो सही एबीसी का उपयोग नहीं कर रही है (और instanceof चेक में विफल रहता है) या एबीसी द्वारा "मान्य" है।

इसके अतिरिक्त, एबीसी सचमुच, और विचारधारा के माध्यम से इंटरफेस को दस्तावेज करने के लिए उत्कृष्ट तरीके के रूप में कार्य करता है।

1

AFAIK, मानक अभ्यास NotImplementedError अपूर्ण पूरक विधियों के लिए अपवाद का उपयोग करना है।

लेकिन मेरा मानना ​​है कि एबीसी को पाइथोनिक माना जा सकता है, क्योंकि अब यह part of the Python standard library है।

संबंधित मुद्दे