La seule solution que je vois en ce moment est que vous devez vous assurer que vous tenez la seule référence à x
, tout le monde doit pas obtenir lui-même x
mais une référence faible pointant vers x
. références faibles sont mises en œuvre dans le module weakref
et vous pouvez l'utiliser de cette façon:
>>> 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
Toutefois, notez que toutes les classes peuvent être faibles référencés. En particulier, la plupart des types intégrés ne le peuvent pas. Certains types intégrés peuvent être faibles référencés si vous les sous-classez (comme dict
), mais d'autres ne peuvent pas (comme int
).
où est ce 'a' dont vous parlez? –
Voulez-vous dire 'x'? –
pourquoi voudriez-vous faire ceci? – SilentGhost