यह एक प्रश्न है जो मुझसे another question द्वारा प्रेरित किया गया है।Django सार मॉडल बनाम सरल पायथन मिश्रण बनाम पायथन एबीसी
Django Abstract base classes कार्यक्षमता (जो पाइथन में एबीसी कक्षाओं के समान नहीं है) प्रदान करता है ताकि कोई मॉडल (Django के मॉडल। मॉडल) बना सके जिससे कोई उत्तराधिकारी हो सके, लेकिन उस मॉडल के बिना वास्तविक तालिका में डेटाबेस। मॉडल के मेटा क्लास में 'सार' विशेषता सेट करके इस व्यवहार को ट्रिगर करता है।
अब सवाल: Django इस तरह क्यों हल करता है? इस विशेष प्रकार के 'सार बेस क्लास' मॉडल की आवश्यकता क्यों है? ऑब्जेक्ट क्लास से विरासत में और मॉडल मॉडल को मौजूदा मॉडल के साथ मिलाकर मॉडल मिश्रण क्यों न करें? या यह पाइथन एबीसी के लिए भी एक काम से कर सकता है? (ध्यान रखें कि आप मैं अजगर में एबीसी वर्गों के साथ बहुत परिचित नहीं हूँ, मेरी अज्ञानता यहाँ दिखाई दे सकते हैं)
(स्वीकार किए जाते हैं जवाब के रूप में यह अंकन, हालांकि डैनियल भी अच्छा है, लेकिन अराम किरकिरा-जुओं से भरा हुआ बिट्स के बारे में अधिक थोड़ा विस्तार किया।) हूँ मैं समझ में सही कर कि, वस्तु इनहेरिट mixins का उपयोग करके मैं सक्षम हो जाएगा मॉडल पर अतिरिक्त फ़ील्ड घोषित करने के लिए? लेकिन मैं अतिरिक्त तरीकों को जोड़ने या उन्हें ओवरराइड करने में सक्षम हो जाएगा? – hopla
हां, ऑब्जेक्ट-विरासत मिश्रण मिश्रित अतिरिक्त फ़ील्ड और विधियों की घोषणा कर सकते हैं। आप यह सुनिश्चित करके विधियों को ओवरराइड कर सकते हैं कि आपका ऑब्जेक्ट-विरासत मिश्रण-इन कक्षाओं की सूची में पहले से प्राप्त होता है। हालांकि, आदेश के बावजूद, एक ऑब्जेक्ट-विरासत मिश्रण एक फ़ील्ड को ओवरराइड नहीं कर सकता है (हालांकि यह करने की कोशिश करता है तो यह सत्यापित करने में विफल नहीं होगा)। –