On Fri, Jun 28, 2019 at 1:59 AM nate lust <[email protected]> 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 -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/XMRJJDJV5ZJYQNVZYK3DKBSKXYBP5Y4R/
Code of Conduct: http://python.org/psf/codeofconduct/