Exceptions raised by the callback will be noted on the standard error output,
but cannot be propagated; they are handled in exactly the same way as exceptions
- raised from an object's :meth:`__del__` method.
+ raised from an object's :meth:`~object.__del__` method.
Weak references are :term:`hashable` if the *object* is hashable. They will
maintain their hash value even after the *object* was deleted. If
Added support for ``|`` and ``|=`` operators, as specified in :pep:`584`.
:class:`WeakValueDictionary` objects have an additional method that has the
-same issues as the :meth:`keyrefs` method of :class:`WeakKeyDictionary`
-objects.
+same issues as the :meth:`WeakKeyDictionary.keyrefs` method.
.. method:: WeakValueDictionary.valuerefs()
Exceptions raised by finalizer callbacks during garbage collection
will be shown on the standard error output, but cannot be
propagated. They are handled in the same way as exceptions raised
- from an object's :meth:`__del__` method or a weak reference's
+ from an object's :meth:`~object.__del__` method or a weak reference's
callback.
When the program exits, each remaining live finalizer is called
obj dead or exiting
-Comparing finalizers with :meth:`__del__` methods
--------------------------------------------------
+Comparing finalizers with :meth:`~object.__del__` methods
+---------------------------------------------------------
Suppose we want to create a class whose instances represent temporary
directories. The directories should be deleted with their contents
when the first of the following events occurs:
* the object is garbage collected,
-* the object's :meth:`remove` method is called, or
+* the object's :meth:`!remove` method is called, or
* the program exits.
-We might try to implement the class using a :meth:`__del__` method as
+We might try to implement the class using a :meth:`~object.__del__` method as
follows::
class TempDir:
def __del__(self):
self.remove()
-Starting with Python 3.4, :meth:`__del__` methods no longer prevent
+Starting with Python 3.4, :meth:`~object.__del__` methods no longer prevent
reference cycles from being garbage collected, and module globals are
no longer forced to :const:`None` during :term:`interpreter shutdown`.
So this code should work without any issues on CPython.
-However, handling of :meth:`__del__` methods is notoriously implementation
+However, handling of :meth:`~object.__del__` methods is notoriously implementation
specific, since it depends on internal details of the interpreter's garbage
collector implementation.