[Python-ideas] Null coalescing operators
Andrew Barnert
abarnert at yahoo.com
Sat Sep 19 03:10:17 CEST 2015
More information about the Python-ideas mailing list
Sat Sep 19 03:10:17 CEST 2015
- Previous message (by thread): [Python-ideas] Null coalescing operators
- Next message (by thread): [Python-ideas] Null coalescing operators
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sep 18, 2015, at 18:00, Chris Angelico <rosuav at gmail.com> wrote: > >> On Sat, Sep 19, 2015 at 10:49 AM, Andrew Barnert <abarnert at yahoo.com> wrote: >> Obviously "spam?" returns something with a __getattr__ method that just passes through to spam.__getattr__, except that on NoneType it returns something with a __getattr__ that always returns None. That solves the eggs case. >> >> Next, "spam?.cheese?" returns something with a __call__ method that just passed through to spam?.cheese.__call__, except that on NoneType it returns something with a __call__ that always returns None. That solves the cheese case. > > Hang on, how do you do this? How does the operator know the difference > between "spam?", which for None has to have __getattr__ return None, > and "spam?.cheese?" that returns (lambda: None)? >>> spam None >>> spam? NoneQuestion >>> spam?.cheese None >>> spam?.cheese? NoneQuestion >>> spam?.cheese?() None All you need to make this work is: * "spam?" returns NoneQuestion if spam is None else spam * NoneQuestion.__getattr__(self, *args, **kw) returns None. * NoneQuestion.__call__(self, *args, **kw) returns None. Optionally, you can add more None-returning methods to NoneQuestion. Also, whether NoneQuestion is a singleton, has an accessible name, etc. are all bikesheddable. I think it's obvious what happens is "spam" is not None and "spam.cheese" is, or of both are None, but if not, I can work them through as well. > ChrisA > _______________________________________________ > Python-ideas mailing list > Python-ideas at python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/
- Previous message (by thread): [Python-ideas] Null coalescing operators
- Next message (by thread): [Python-ideas] Null coalescing operators
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-ideas mailing list