On Wed Mar 19 2014 at 2:46:48 PM, Antoine Pitrou <solip...@pitrou.net>
wrote:

>
> Hello,
>
> It is known to be cumbersome to write a proxy type that will correctly
> proxy all special methods (this has to be done manually on the type,
> since special methods are not looked up on the instance: a __getattr__
> method would not work).
>
> Recently we've had reports of two stdlib types that forgot to
> implement some special methods:
> - weakref.proxy doesn't implement __reversed__:
> http://bugs.python.org/issue19359
> - mock.MagicMock doesn't implement __truediv__:
> http://bugs.python.org/issue20968
>
> In http://bugs.python.org/issue19359#msg213530 I proposed to introduce a
> "proxy
> protocol" (__proxy__ / tp_proxy) that would be used as a fallback by
> _PyObject_LookupSpecial to fetch the lookup target, i.e.:
>
> def _PyObject_LookupSpecial(obj, name):
>     tp = type(obj)
>     try:
>         return getattr(tp, name)
>     except AttributeError:
>         return getattr(tp.tp_proxy(), name)
>
> What do you think?
>

 Without having the code in front of me, would this only be for magic
methods and attributes, or all attributes? IOW would this mean that if I
assign an object to __proxy__ it would take care of the uses of __getattr__
for proxying?
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to