What's the public API alternative to _PyObject_GC_IS_TRACKED()?
Marco Sulla
Marco.Sulla.Python at gmail.com
Wed Dec 29 05:59:21 EST 2021
On Wed, 29 Dec 2021 at 09:12, Dieter Maurer <dieter at handshake.de> wrote:
> `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`.
It does not work:
$ python
Python 3.10.0 (heads/3.10-dirty:f6e8b80d20, Nov 18 2021, 19:16:18)
[GCC 10.1.1 20200718] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import frozendict
>>> frozendict.c_ext
False
>>> from frozendict import frozendict as fd
>>> from collections.abc import MutableMapping as Mm
>>> issubclass(fd, Mm)
True
>>> @classmethod
... def _my_subclasshook(klass, subclass):
... if subclass == fd:
... return False
... return NotImplemented
...
>>> @classmethod
... def _my_subclasshook(klass, subclass):
... print(subclass)
... if subclass == fd:
... return False
... return NotImplemented
...
>>> Mm.__subclasshook__ = _my_subclasshook
>>> issubclass(fd, Mm)
True
>>> issubclass(tuple, Mm)
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
False
>>>
More information about the Python-list
mailing list