On Wed Mar 19 2014 at 2:46:48 PM, Antoine Pitrou <solipsis at 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? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20140319/1afee8b8/attachment.html>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4