स्टैक ओवरफ़्लो पर पहली बार।रूबी या पायथन में कक्षा की अवधारणा को फिर से लिखा जा सकता है?
मैं रूबी या पायथन द्वारा प्रदान की गई कुछ मेटाप्रोग्रामिंग सुविधाओं का उपयोग करने में देख रहा हूं, लेकिन पहले मुझे यह जानने की आवश्यकता है कि वे मुझे किस भाषा को विस्तारित करने की अनुमति देंगे। मुख्य बात यह है कि मुझे कक्षा की अवधारणा को फिर से लिखना है। इसका मतलब यह नहीं है कि मैं रन टाइम के दौरान विशिष्ट कक्षा को फिर से लिखना चाहता हूं, लेकिन मैं कक्षा क्या है, इसकी अपनी अवधारणा बनाना चाहता हूं। यहां एक स्मीज अधिक विशिष्ट होने के लिए, मैं कुछ ऐसा करना चाहता हूं जो है जो लोग आम तौर पर कक्षा कहते हैं, लेकिन मैं एक "open world" धारणा का पालन करना चाहता हूं। सामान्य वर्गों की "बंद दुनिया" में, अगर मैं कुत्ते को पशु के उप-वर्ग होने के लिए कुत्ते का उप-वर्ग बनने की घोषणा करता हूं, तो मुझे पता है कि पूडल फुरकोट का एक प्रकार भी नहीं होने वाला है। हालांकि, एक खुली दुनिया कक्षा में, फिर मैंने जो पूडल ऑब्जेक्ट परिभाषित किया है वह हो सकता है और हो सकता है कि फुरकोट प्रकार का ऑब्जेक्ट न हो और हम निश्चित रूप से तब तक नहीं जान पाएंगे जब तक कि मैं समझाऊं कि मैं पूडल पहन सकता हूं। (गरीब पूडल।) यह सब एक अध्ययन के साथ करना है जो मैं ओडब्लूएल ऑटोलॉजीज से संबंधित कर रहा हूं।
बस इतना ही पता है, मैंने ऑनलाइन जानकारी खोजने की कोशिश की है, लेकिन यहां शर्तों के अधिभार के कारण मुझे कुछ भी उपयोगी नहीं मिला है।
सुपर धन्यवाद, जॉन
अद्यतन: मैं बस कक्षा की मेरी खुली दुनिया अवधारणा के लिए एक अच्छा उपयोग के मामले के बारे में सोचा। शायद यह वास्तव में क्या करना चाहता है की बेहतर समझ प्रदान करेगा। मैं इसे परिभाषित करने के बजाय कक्षा का "वर्णन" करने में सक्षम होना चाहता हूं। उदाहरण के लिए, मैं यह कहने में सक्षम होना चाहता हूं कि एक कुत्ता कुछ भी है जिसमें ए) चार पैर हैं बी) छाल। फिर मैं अनिर्दिष्ट कक्षा का एक वस्तु बनाने में सक्षम होना चाहता हूं, और वर्णन करता हूं कि इस ऑब्जेक्ट में चार पैर हैं। इस बिंदु पर ऑब्जेक्ट अभी भी अनिर्दिष्ट प्रकार का है। तब मैं कहना चाहता हूं कि वस्तु छाल जाती है। इस बिंदु पर, वस्तु एक कुत्ते (संभवतः अन्य चीजों के बीच) के रूप में जाना जाएगा।
क्या यह आपके बाद के कई विरासत हो सकता है? इससे 'पूडल' को 'कुत्ते' और 'फरकोट' दोनों का उप-वर्ग होना चाहिए, और नतीजतन, यह पता लगाना कि 'पूडल' 'कुत्ते 'का उप-वर्ग है, यह संभावना को बाहर नहीं करता है कि यह' FurCoat'। –
ऐसा लगता है कि आप कक्षा को संशोधित करने के इस विचार पर भी ठीक हो गए हैं। वर्ग प्रकारों की बजाय फ़ील्ड की तुलना करने के लिए रुबी में 'is_a?' कैसे काम करता है यह बदलना संभव है और जो भी आप चाहते हैं उसे करना चाहिए। बतख टाइपिंग के लिए –