Giải pháp duy nhất tôi nhìn thấy ngay bây giờ là bạn nên chắc chắn rằng bạn đang nắm giữ các tài liệu tham khảo chỉ để x
, tất cả mọi người khác phải không được x
bản thân nhưng một tham chiếu yếu chỉ vào x
. tài liệu tham khảo yếu được thực hiện trong các module weakref
và bạn có thể sử dụng nó theo cách này:
>>> 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
Tuy nhiên, lưu ý rằng không phải tất cả các lớp học có thể yếu được tham chiếu. Đặc biệt, hầu hết các loại built-in không thể. Một số kiểu tích hợp có thể được tham chiếu yếu nếu bạn phân lớp chúng (như dict
), nhưng một số khác không thể (như int
).
Nguồn
2010-06-10 12:54:48
nơi này là 'a' bạn đang nói về? –
Ý của bạn là 'x'? –
tại sao bạn muốn thực hiện việc này? – SilentGhost