Marco Sulla <launchpad....@marco.sulla.e4ward.com> added the comment:

Since probably Monica are taking her holidays, I try to decipher her answer.

Probably, the more problematic function spotted by Monica is update_one_slot. I 
re-quote her sentence:

update_one_slot looks for the parent implementation by trying to find the 
generated wrapper methods through an MRO search.

dict doesn't have generated wrappers for sq_contains and mp_subscript, because 
it provides explicit __contains__ and __getitem__ implementations.

Instead of inheriting sq_contains and mp_subscript, update_one_slot ends up 
giving the subclass sq_contains and mp_subscript implementations that perform 
an MRO search for __contains__ and __getitem__ and call those. This is much 
less efficient than inheriting the C slots directly.

The solution for Monica is to change the behaviour of update_one_slot for these 
cases (no wrappers, C slots directly).

I don't know the implications of this change...

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue44921>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to