एकमात्र समाधान मैं अभी देखते हैं कि आप यह सुनिश्चित करें कि आप x
को केवल संदर्भ के पकड़े हुए हैं बनाना चाहिए है, बाकी सब x
ही नहीं मिल चाहिए, लेकिन एक कमजोर संदर्भ x
की ओर इशारा करते। कमजोर संदर्भ weakref
मॉड्यूल में लागू किया जाता है और आप इसे इस तरह से उपयोग कर सकते हैं:
>>> import weakref
>>> class TestClass(object):
... def bark(self):
... print "woof!"
... def __del__(self):
... print "destructor called"
...
>>> x = TestClass()
>>> b = weakref.proxy(x)
>>> b
<weakproxy at 0x7fa44dbddd08; to TestClass at 0x7fa44f9093d0>
>>> b.bark()
woof!
>>> del x
destructor called
>>> b.bark()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ReferenceError: weakly-referenced object no longer exists
हालांकि, ध्यान दें कि सभी वर्गों के कमजोर संदर्भित हो सकता है। विशेष रूप से, अधिकांश अंतर्निर्मित प्रकार नहीं कर सकते हैं। कुछ अंतर्निर्मित प्रकार कमजोर-संदर्भित हो सकते हैं यदि आप उन्हें उपclass (जैसे dict
), लेकिन अन्य नहीं कर सकते (जैसे int
)।
स्रोत
2010-06-10 12:54:48
यह 'ए' कहां है जिसके बारे में आप बात कर रहे हैं? –
क्या आपका मतलब 'x' था? –
आप ऐसा क्यों करना चाहते हैं? – SilentGhost