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