[Python-ideas] Object grabbing

João Santos jmcs at jsantos.eu
Mon May 2 07:48:48 EDT 2016


I think the ".d = 1" statement feels like a bug waiting to happen. It's
very easy to miss a dot.

On 2 May 2016 at 09:34, Robert van Geel <robert at bign.nl> wrote:

> On 5/2/2016 5:28 AM, Franklin? Lee wrote:
>
>> On Sun, May 1, 2016 at 4:27 PM, Robert van Geel <robert at bign.nl> wrote:
>>
>>> First of all I'm new to this. I tried figuring out if some inquiry like
>>> mine
>>> below already was posted but I couldn't find it, frankly partly because I
>>> don't know what to look for, I'm not sure if there's a name for this
>>> idea.
>>> I'm not convinced my idea below is solid so apologies if it's naïve but I
>>> figured to post it anyway.
>>> It has to do with the possibility to fold typical opcodes pairs by
>>> introducing a language construct.
>>>
>>> The idea is to be able to write this code:
>>>
>>> myobject.a
>>> myobject.b
>>> myobject.c()
>>> myobject.d = 1
>>>
>>> like this:
>>>
>>> using myobject:
>>>      .a
>>>      .b
>>>      .c()
>>>      .d = 1
>>>
>> Would the following solve your usecase? Explicit naming:
>>
>>      with myobject import a,b,c,d:
>>          a
>>          b
>>          c()
>>          d = 1
>>
>>
>> Alternatively, putting the object at the end (like in gen expressions):
>>
>>      with a,b,c,d from myobject:
>>          a
>>          b
>>          c()
>>          d = 1
>>
>>
>> Questions:
>>      * Should this add additional scope?
>>      * Descriptors and `__getattr__`-only attributes: Do you get the
>> attribute at the start of the block, or do you call `__getattr__`
>> every time?
>>      * That `d = 1` is Pythonically odd if it works as in the original
>> example.
>>
>
> Sidenote: the idea I posed is actually borrowed from a language i used to
> use, Visual Foxpro, where it was implemented using the 'with' keyword.
>
> Your proposal has the need to duplicate all variables, so instead of
> multiple times typing "self." you have to type them double in the line
> using "with" so it's shorter but not optimally short. Also if you want the
> accompanying faster opcodes that means you have to put 4 variables on the
> stack straight away for fast access, instead of one.
>
> To answer you questions:
> - No it would not add scope, it's just a combination of syntactical sugar
> combined with faster opcodes.
> - The attributes are not grabbed at the beginning of the block, instead
> internally in memory there's a 'grabbed object' stack that can be accessed
> directly without the LOAD_FAST opcode
> - Your fourth remarks refers to your non-dotted code. I think the ".d = 1"
> statement feels pythonic but again maybe because I was so used to the
> syntax in the VFP language
>
>
> _______________________________________________
> 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/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160502/db0044a9/attachment-0001.html>


More information about the Python-ideas mailing list