What's the public API alternative to _PyObject_GC_IS_TRACKED()?

Dieter Maurer dieter at handshake.de
Wed Dec 29 03:12:36 EST 2021


Marco Sulla wrote at 2021-12-29 08:08 +0100:
>On Wed, 29 Dec 2021 at 00:03, Dieter Maurer <dieter at handshake.de> wrote:
>> Why do you not derive from `dict` and override its mutating methods
>> (to raise a type error after initialization is complete)?
>
>I've done this for the pure py version, for speed. But in this way,
>frozendict results to be a subclass of MutableMapping.

`MutableMapping` is a so called abstract base class (--> `abc`).

It uses the `__subclass_check__` (and `__instance_check__`) of
`abc.ABCMeta` to ensure `issubclass(dict, MutableMapping)`.
Those can be customized by overriding `MutableMapping.__subclasshook__`
to ensure that your `frozendict` class (and their subclasses)
are not considered subclasses of `MutableMapping`.

There is a PEP (I forgot its number, but searching for any of
the special method names above should locate it) describing
the `issubclass/isinstance` extension logik.


More information about the Python-list mailing list