मैं इस बारे में सोच रहा हूं कि मैं पायथन में कक्षाएं कैसे लिखता हूं। अधिक विशेष रूप से कैसे निर्माता को कार्यान्वित किया जाता है और वस्तु को कैसे नष्ट किया जाना चाहिए। मैं ऑब्जेक्ट क्लीनअप करने के लिए सीपीथॉन के संदर्भ गिनती पर भरोसा नहीं करना चाहता हूं। यह मूल रूप से मुझे बताता है कि मुझे अपने ऑब्जेक्ट जीवनकाल को प्रबंधित करने के लिए बयानों के साथ उपयोग करना चाहिए और मुझे एक स्पष्ट बंद/निपटान विधि की आवश्यकता है (यदि ऑब्जेक्ट एक संदर्भ प्रबंधक भी है तो इस विधि को __exit__
से बुलाया जा सकता है)।क्या __del__ में ऑब्जेक्ट को बंद करने/निपटाने के लिए वास्तव में ठीक है?
class Foo(object):
def __init__(self):
pass
def close(self):
pass
अब, मेरे सभी वस्तुओं इस तरह से व्यवहार और मेरे सारे कोड close()
(या dispose()
) को बयान या स्पष्ट कॉल के साथ उपयोग करता है मैं वास्तव में जरूरत नहीं दिख रहा है मुझे __del__
में किसी भी कोड डालने के लिए है। क्या हमें वास्तव में हमारी वस्तुओं का निपटान करने के लिए __del__
का उपयोग करना चाहिए?
मैं ऑब्जेक्ट क्लीनअप करने के लिए सीपीथॉन के संदर्भ गिनती पर भरोसा नहीं करना चाहता हूं। धरती पर क्यों नहीं? वस्तु संदर्भ गिनती के साथ क्या गलत है? –
@ एसएलओटी, संदर्भ गिनती सिर्फ वहां नहीं है यदि आप अपने कोड को पर्यावरण के साथ अधिक उन्नत कचरा संग्रह, जैसे कि ज्योथन या आयरनपीथन के साथ ले जाएं - और यदि एक दिन सीपीथन (जैसे अनलाडेन निगल के माध्यम से) लात मारने और चिल्लाने लगते हैं 21 वीं शताब्दी में भी? मैं अपने पुन: प्रयोज्य, पोर्टेबल पुस्तकालयों (एक-प्रयोग, फेंकने, स्क्रिप्ट और मामूली मॉड्यूल के विपरीत) में आरसी पर "भरोसा नहीं" के बारे में ओपी से सहमत हूं। –
@ एसएलॉट: एलेक्स ने पहले ही आपके प्रश्न का उत्तर दिया है। संदर्भ गणना पर भरोसा नहीं करना चाहते हैं, यह एक और अच्छा कारण है कि पीआईपी परियोजना से बाहर आने वाला जेआईटी है। इसके पीछे के लोग आशावादी हैं कि यह सीपीथन की तुलना में वैकल्पिक गति अप प्रदान करने में सक्षम होंगे। – Arlaharen