On Fri, Jun 28, 2019 at 1:59 AM nate lust <natel...@linux.com> wrote:
> d = a + b + c
> print(d)
>
> tmp = a + b
> d = getcloaked(tmp) + c
> prtint(d)
>
> Now the behavior is the same as the first case, as getcloaked returns the 
> metavariable that has not been bound
> to a name and so it is loaded right on the stack.

Or is it getcloaked("tmp"), which has to magically locate something
*by name*? Because calling getcloaked(tmp) would have to call
__getself__. Unless it's a magical construct.

In any case, you make it so that ANY refactoring has to call
getcloaked, just in case there's a __getself__ lurking in the wings.
That's a pretty terrible cost.

> There are two (three) important cases when I have exempt __getself__ from 
> being called. First is when an
> object is used in methods defined within itself. This means that self can be 
> used when defining methods
> without triggering recursive behavior. The other cases are calling or 
> returning from a function. This is
> to ensure the following say consistent.
>
> f1():
>     x = MetaVar()
>     return x
>
> f2():
>     return MetaVar()
>
> In f1 the return function evaluates if its return argument is the result of a 
> metavar __getself__ call and if
> so, returns the metavar instead.

Eww. Extremely magical.

And, remind me, what problem(s) is __getself__ solving?

ChrisA
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/XMRJJDJV5ZJYQNVZYK3DKBSKXYBP5Y4R/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to