Here's another revolutionary thought: add a new operator and associated
dunder method (to object?)
whose meaning is *undefined*. Its default implementation would do
*nothing* useful (raise an error? return None?).
E.g. suppose the operator were `..`
Then in a specific class you could implement x..y to mean x['y']
and then you could write
obj..abc..def..ghi
Still fairly concise, but warns that what is happening is not normal
attribute lookup.
On 15/04/2020 22:34, Glenn Linderman wrote:
On 4/15/2020 12:47 PM, Ivan Pozdeev via Python-Dev wrote:
When writing a proof-of-concept implementation, however, I bumped
into the need to distinguish which of the child objects are
containers (thus need to be wrapped as well) and which are the leaves
(thus need to be returned as is). I guess this is going to be
application-specific. And the same problem will arise with any
implementation, not only a wrapper.
Do the child objects truly need to be wrapped, or just accessed?
Thanks for your comments though, they inspired a thought.
The problem with the glom syntax versus the dotted syntax is that the
minimal syntax is bulky.
obj.abc.def.ghi versus glom( obj, 'abc.def.ghi')
The problem with attribute syntax is the conflict with regular
attributes, and the limitation of valid identifier characters. Glom
probably doesn't have these problems.
So my new thought is that we need a new syntax. The minimal existing
syntax might be
obj._('abc.def.ghi') or maybe obj['abc.def.ghi']
although the latter would conflict with regular dict lookups, but obj
isn't a regular dict, so that might not matter.
A new syntax might be:
obj.'abc.def.ghi'
In any of these syntaxes, one could enhance it to use variables in
some spots similarly to f-strings (but from the beginning, so no 'f'
would be required)
foo = 'def'
obj.'abc.{foo}.ghi'
would access the same item as previous examples.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/python-dev@python.org/message/3A5V62LY3DAPAREZMB7MVRYX4432NR7F/
Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/python-dev@python.org/message/KAAQISHADS5S5WUCYESHSCEBND7FHF2F/
Code of Conduct: http://python.org/psf/codeofconduct/