Marco Sulla wrote at 2021-12-29 08:08 +0100: >On Wed, 29 Dec 2021 at 00:03, Dieter Maurer <die...@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. -- https://mail.python.org/mailman/listinfo/python-list