On 10/25/21 10:48, Dieter Maurer wrote:
Mats Wichmann wrote at 2021-10-24 19:10 -0600:
Have run into a problem on a "mature" project I work on (there are many
years of history before I joined), there are a combination of factors
that combine to trigger a KeyError when using copy.copy().
...
There's a class that's a kind of proxy ...

"Proxying" has become very difficult since the introduction
of Python's "new style classes" and looking up "special methods"
on the type rather then the type instance.

This essentially means that the proxy must implement all
"special methods" that may be relevant to the application.

All special methods start and end with `"__"`.
Your `__getattr__` could raise an `AttributeError` as soon as
it is called with such a name.


Thanks. Raising an AttributeError here was what I was going to propose so maybe I'll take your reply as validation I was on the right track.

This stuff was definitely defined in an era before the new-style classes, might have to examine some other proxying classes to make sure there aren't other holes...

thanks again,

-- mats
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to