python - Deleting attributes when deleting instance -
वर्ग ए: def __get (स्व): वापस स्वयं ._x
def __set ( आत्म, y): self._x = y def __delete_x (स्वयं): प्रिंट ('डिलिटिंग') del self._x x = गुण (__ जाओ, __ सेट, __ delete_x) b = A () # यहां, जब b को हटा दिया जाता है, तो मैं 'बी' को हटाए जाने के लिए, यानी __delete_x () # को बुलाया जाता है (और तत्काल परिणाम के लिए, "डिलिटिंग" मुद्रित किया जाता है) डेल बी
डेल
स्टेटमेंट की शब्दार्थ वास्तव में स्वयं को उधार नहीं देते जो आप यहां चाहते हैं। डेल बी
सरल ए ऑब्जेक्ट के संदर्भ को हटाता है जिसे आप अभी स्थानीय स्कोप फ्रेम / डिक्शनरी से इन्स्टिट्यूट करते हैं; यह सीधे ऑब्जेक्ट पर किसी भी आपरेशन को निष्पादित नहीं करता है। यदि वह वस्तु का अंतिम संदर्भ था, तो शून्य को गिरने वाली संदर्भ संख्या, या एक चक्र एकत्र करने वाला कचरा कलेक्टर, वस्तु को deallocated हो सकता है। आप ऑब्जेक्ट को एक
__ डेल __
विधि जोड़कर, या एक कॉलबैक जो वांछित कार्य करता है जोड़कर इसे देख सकते हैं।
बाद के दो समाधानों में से कोई भी एक महान विचार की तरह नहीं लगता है, हालांकि; __ डेल __
विधि कचरा कलेक्टर को ऑब्जेक्ट से जुड़े किसी भी चक्र को इकट्ठा करने से रोकते हैं; और जब भी कमजोर को इस समस्या से ग्रस्त नहीं होता है, या तो किसी भी मामले में आप एक अजीब वातावरण में चल रहे होंगे (जैसे प्रोग्राम बंद होने के दौरान), जो इसे पूरा करने के लिए मुश्किल हो सकता है।
यदि आप अपने सटीक उपयोग के मामले में विस्तार कर सकते हैं, तो यह हो सकता है कि आपके इच्छित लक्ष्य को पूरा करने के लिए एक पूरी तरह से अलग दृष्टिकोण है, लेकिन ऐसे सामान्य और सीमित उदाहरण के आधार पर अनुमान लगाने में मुश्किल है।
Comments
Post a Comment