The default could be at the end with an argument to unboxing : favorite = NoneAware(cfg).user.profile.food.unbox("Spam")
Le lun. 23 juil. 2018 à 17:26, Paul Moore <p.f.mo...@gmail.com> a écrit : > On 23 July 2018 at 16:12, David Mertz <me...@gnosis.cx> wrote: > > The need addressed by PEP 505 is real; it's also MUCH more niche and > > uncommon than something that would merit new syntax. Moreover, the > actual > > legitimate purpose served by the PEP 505 syntax is easily served by > existing > > Python simply by using a wrapper class. > > > > Here is a way of solving the "deep attribute access to messy data" > problem > > that is: > > > > (1) Much more explicit > > (2) Requires no change in syntax > > (3) Will not be a bug magnet > > (4) Inasmuch as there are semantic traps, they are announced by the use > of a > > class whose documentation would be pointed to for readers > > [...] > > > I haven't implemented the equivalent dictionary lookups in the below. > That > > would be straightforward, and I'm sure my 5 minute throwaway code could > be > > improved in other ways also. But something better than this in the > standard > > library would address ALL the actual needs described in PEP 505. Even > the > > pattern Steve Dower is especially fond of like: > > > > favorite = cfg?.user?.profile?.food ?? "Spam" > > > > > > (i.e. a configuration may be incomplete at any level, if levels are > missing > > default favorite food is Spam). We could simply spell that: > > > > favorite = NoneAware(cfg, "Spam").user.profile.food.unbox() > > Thank you. That's the sort of "what would this look like if > implemented as a library rather than language syntax" solution that I > had in mind with my earlier post. > > I would be very interested to hear discussion of the pros and cons of > adding new syntax to the language as per PEP 505 in comparison to a > solution like this (ultimately more fleshed out and "production > quality") rather than comparisons PEP 505 to raw "roll your own" > Python code. > > For me: > > * Library solution works with all versions of Python > * The need for unbox is a little ugly, but arguably less so than ?. > (conceded that's a subjective view) > * Mixing ?. and . is terser than unboxing and reboxing - but are there > any real examples where that's needed? > * Having the default at the beginning rather than at the end doesn't > follow natural reading order (but again that's pretty subjective) > > There's little here that isn't subjective, so I expect a lot of heated > debate that ultimately convinces no-one. But the "you can use this > solution now" aspect of the library solution seems pretty compelling > to me - at least in terms of "let's publish the library solution and > then based on experience with it, review PEP 505". > > Paul > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/