Например в результате этого кода, по obj2 иobj3 можно достучатся до нашего объекта:
obj1 = MyClass('Test') obj2 = obj1 obj3 = obj1 del obj1
print(obj2)
NameError: name 'obj2' is not defined
obj1 = MyClass('Test') obj2 = obj1 obj3 = obj1 del obj1
print(obj2)
NameError: name 'obj2' is not defined
In [1]: import weakref In [2]: class MyClass(object): ...: ...: def __init__(self, text): ...: self.text = text ...: ...: def __repr__(self): ...: return '<MC (%s)>' % self.text ...: In [3]: obj1 = MyClass('test') In [4]: obj2 = weakref.ref(obj1) In [5]: obj3 = weakref.ref(obj1) In [6]: print obj1 <MC (test)> In [7]: print obj2(), obj3() <MC (test)> <MC (test)> In [8]: del obj1 In [9]: print obj2(), obj3() None None
import weakref class MyClass(object): def __init__(self, text): self.text = text def __repr__(self): return '<MC (%s)>' % self.text obj1 = MyClass('test') obj2 = weakref.ref(obj1) obj3 = weakref.ref(obj1) print obj1 print obj2(), obj3() del obj1 print obj2(), obj3
<MC (test)> <MC (test)> <MC (test)> None <weakref at 0x7f0404cbdec0; dead>
FishHookВ последней строчке скобки
Неа, не работает
print obj2(), obj3
print obj2(), obj3()
svasСпасибо, это то что нужно!
Можете использовать weakref