La única solución que veo ahora es que usted debe asegurarse de que que está sosteniendo la única referencia a x
, todo el mundo debe no llegar x
sí mismo, sino una referencia débil que apunta a x
. referencias débiles son implementados en el módulo weakref
y se puede utilizar de esta manera:
>>> 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
Sin embargo, tenga en cuenta que no todas las clases pueden ser débil se hace referencia. En particular, la mayoría de los tipos incorporados no pueden. Algunos tipos incorporados pueden tener una referencia débil si los subclase (como dict
), pero otros no (como int
).
¿De dónde es este 'a' de lo que estás hablando? –
¿Querías decir 'x'? –
¿por qué le gustaría hacer esto? – SilentGhost