- पाइथन में
__slots__
लागू किया गया है? - क्या यह C interface में उजागर हुआ है?
- के माध्यम से सी में पाइथन कक्षा को परिभाषित करते समय मुझे
__slots__
व्यवहार कैसे प्राप्त हो सकता है?
उत्तर
पायथन कक्षाएं बनाते समय, वे डिफ़ॉल्ट रूप से __dict__
रखते हैं और आप उन पर कोई विशेषता सेट कर सकते हैं। स्लॉट का बिंदु अंतरिक्ष बचाने के लिए __dict__
नहीं बनाना है।
सी इंटरफ़ेस में यह दूसरी तरह के आसपास, एक विस्तार वर्ग डिफ़ॉल्ट कोई __dict__
से है, और आप के बजाय स्पष्ट रूप से एक जोड़ सकते हैं और इसे संभाल करने के लिए getattr/setattr समर्थन जोड़ने (हालांकि सौभाग्य से वहाँ इस के लिए तरीकों को पहले से ही कर रहे हैं करने के लिए होगा , PyObject_GenericGetAttr
और PyObject_GenericSetAttr
, इसलिए आपको उन्हें लागू करने की आवश्यकता नहीं है, बस उनका उपयोग करें। (मजेदार है कि PyObject_GenericDelAttr नहीं है, हालांकि, मुझे यकीन नहीं है कि यह क्या है। (मुझे शायद इस तरह घोंसले कोष्ठक को रोकना चाहिए (या नहीं))))।
इसलिए स्लॉट की आवश्यकता नहीं है और न ही एक्सटेंशन प्रकारों के लिए समझ में आता है। डिफ़ॉल्ट रूप से आप बस अपने getattr/setatttr विधियों को कक्षा के उन विशेषताओं तक पहुंचने दें।
का सवाल है कि यह कैसे लागू हो जाता है, कोड typeobject.c में काफी unexciting
PyObject_GenericDelAttr = PyObject_GenericSetAttr एक पूर्ण मान तर्क के साथ – ncoghlan
हू, सी एपीआई दस्तावेज़ वास्तव में इस तथ्य को दस्तावेज करने पर ढीले हैं कि tp_setattr और tp_setattro विधियों को हटाने को संभालने के लिए भी माना जाता है। हमें शायद इसके बारे में कुछ करना चाहिए ... – ncoghlan
F या __slots__ को कार्यान्वित करने के तरीके के बारे में अधिक जानकारी, http://code.activestate.com/recipes/532903-how-__slots__-are-implemented/ पर पाइथन निकट समकक्ष पर देखने लायक है। – joeln
- 1. std :: tuple कैसे कार्यान्वित किया जाता है?
- 2. ओपनआईडी कैसे कार्यान्वित किया जाता है?
- 3. बिगडिसीमल कैसे कार्यान्वित किया जाता है?
- 4. "कॉन्स्ट" कैसे कार्यान्वित किया जाता है?
- 5. लेक्सिकल स्कोपिंग कैसे कार्यान्वित किया जाता है?
- 6. एप्लिकेशन वर्चुअलाइजेशन कैसे कार्यान्वित किया जाता है?
- 7. pthread_join कैसे कार्यान्वित किया जाता है?
- 8. आकार का ऑपरेटर सी ++ में कैसे कार्यान्वित किया जाता है?
- 9. Math.Pow() .NET Framework में कार्यान्वित कैसे किया जाता है?
- 10. ऑब्जेक्ट.गेटहाशकोड() सीएलआर और जेवीएम में कैसे कार्यान्वित किया जाता है?
- 11. फाइल सिस्टम में fseek() कैसे कार्यान्वित किया जाता है?
- 12. लिनक्स में सिस्टम कॉल कैसे कार्यान्वित किया जाता है?
- 13. वामी रिकॉर्डर वास्तव में कैसे कार्यान्वित किया जाता है?
- 14. यादृच्छिक() फ़ंक्शन के अंदर - यह कैसे कार्यान्वित किया जाता है?
- 15. malloc() को आंतरिक रूप से कैसे कार्यान्वित किया जाता है?
- 16. डब्ल्यूपीएफ की निर्भरता ऑब्जेक्ट कैसे कार्यान्वित किया जाता है?
- 17. मॉलोक और निःशुल्क कैसे कार्यान्वित किया जाता है?
- 18. फ़ोटोशॉप कटआउट फ़िल्टर कैसे कार्यान्वित किया जाता है?
- 19. Arrays.sort (ऑब्जेक्ट [] ए) - यह कैसे कार्यान्वित किया जाता है?
- 20. इवेंट संचालित प्रोग्रामिंग कैसे कार्यान्वित किया जाता है?
- 21. आंतरिक तरीकों को कैसे कार्यान्वित किया जाता है
- 22. म्यूटेक्स और लॉक संरचनाओं को कैसे कार्यान्वित किया जाता है?
- 23. जावा "यह" कीवर्ड कैसे कार्यान्वित किया जाता है?
- 24. आरईएसटी वास्तुकला वास्तव में क्या है और इसे रेल में कैसे कार्यान्वित किया जाता है?
- 25. मेटाक्लास और __slots__?
- 26. पाइथन का subprocess.call इस तरह कार्यान्वित क्यों किया जाता है?
- 27. जीएमटाइम इस तरह कार्यान्वित क्यों किया जाता है?
- 28. पायथन, __slots__, और "विशेषता केवल पढ़ने के लिए है"
- 29. पायथन के बिना Mercurial काम कैसे स्थापित किया जाता है?
- 30. __RTC_CheckEsp कैसे कार्यान्वित किया गया है?
कर सकते है, और यह काफी बस "वस्तु एक
__slots__
विशेषता है, एक__dict__
का निर्माण नहीं करतीं का एक सवाल है।। :-) क्या आप सी इंटरफ़ेस से '__slots__' विशेषता को असाइन करते हैं जैसे कि आप एक .py फ़ाइल में होंगे? –@ डेविड हेफ़र्नन: केवल गैर-विरासत प्रणाली पर;; ' –