पायथन में वीक रेफरेंसेस बनाने के लिए, हमें weakref मॉड्यूल का उपयोग करने की आवश्यकता है। वीक रेफरेंस ऑब्जेक्ट को जीवित रखने के लिए पर्याप्त नहीं है। वीक रेफरेंस का एक बुनियादी उपयोग बड़े ऑब्जेक्ट के लिए कैश या मैपिंग्स को लागू करना है।
इस मॉड्यूल का उपयोग करने के लिए, हमें इसे आयात करना चाहिए।
import weakref
सभी ऑब्जेक्ट्स को वीकली रेफरेंस नहीं किया जा सकता। टपल या इंट जैसे कुछ बिल्ट-इन टाइप्स, वीक रेफरेंस का समर्थन नहीं करते हैं। वीक रेफरेंस से संबंधित कुछ क्लासेस और मेथड्स हैं।
क्लास weakref.ref(object[, callback])
यह ऑब्जेक्ट के लिए एक वीक रेफरेंस लौटाएगा। जब रेफरेंट अभी भी जीवित है, तो वास्तविक ऑब्जेक्ट को रेफरेंस ऑब्जेक्ट को कॉल करके प्राप्त किया जा सकता है, लेकिन जब वास्तविक ऑब्जेक्ट मौजूद नहीं है, तो यह None लौटाएगा।
मेथड weakref.proxy(object[, callback])
यह मेथड ऑब्जेक्ट के लिए एक प्रॉक्सी लौटाने के लिए उपयोग किया जाता है, जो वीक रेफरेंस का उपयोग कर रहे हैं। लौटाया गया ऑब्जेक्ट या तो ProxyType या CallableProxyType हो सकता है।
मेथड weakref.getweakrefcount(object)
यह मेथड ऑब्जेक्ट्स के वीक रेफरेंसेस और प्रॉक्सीज की संख्या लौटाने के लिए उपयोग किया जाता है।
मेथड weakref.getweakrefs(object)
यह मेथड वीक रेफरेंसेस और प्रॉक्सी ऑब्जेक्ट्स की सूची लौटाने के लिए उपयोग किया जाता है।
उदाहरण कोड
import weakref
class my_list(list):
pass
new_list = my_list('String') # लिस्ट परिभाषित करने के लिए my_list क्लास का उपयोग करें
print(new_list)
weak_ref = weakref.ref(new_list)
new_weak_list = weak_ref()
new_proxy = weakref.proxy(new_list)
print(new_weak_list)
print('The object using proxy: ' + str(new_proxy))
if new_list is new_weak_list:
print("There is a weak reference")
print('The Number of Weak references: ' + str(weakref.getweakrefcount(new_list)))
del new_list, new_weak_list # दोनों ऑब्जेक्ट्स डिलीट करें
print("The weak reference is: " + str(weak_ref()))
आउटपुट
['S', 't', 'r', 'i', 'n', 'g'] ['S', 't', 'r', 'i', 'n', 'g'] The object using proxy: ['S', 't', 'r', 'i', 'n', 'g'] There is a weak reference The Number of Weak references: 2 The weak reference is: None