bpo-30156: Remove property_descr_get() optimization by vstinner · Pull Request #9541 · python/cpython

property_descr_get() uses a "cached" tuple to optimize function
calls. But this tuple can be discovered in debug mode with
sys.getobjects(). Remove the optimization, it's not really worth it
and it causes 3 different crashes.

Microbenchmark:

./python -m perf timeit -v
-s "from collections import namedtuple; P = namedtuple('P', 'x y'); p = P(1, 2)"
--duplicate 1024 "p.x"

Result:

Mean +- std dev: [ref] 32.8 ns +- 0.8 ns -> [patch] 40.4 ns +- 1.3 ns: 1.23x slower (+23%)

https://bugs.python.org/issue30156