On Wed, Jun 26, 2019 at 4:47 PM Chris Angelico <ros...@gmail.com> wrote:
[...]
> There are many things that can be implemented with dunders, yes, but
> in Python, I would expect these two functions to behave identically:
>
> def f1(x):
>     return frob(x).spam
>
> def f2(x):
>     f = frob(x)
>     s = f.spam
>     return s
>
> This correlation is critical to sane refactoring. You should be able
> to transform f1 into f2, and then insert print calls to see what 'f'
> and 's' are, without affecting the behaviour of the function. The
> proposed magic would change and completely break this; and as such, it
> violates programmer expectations *across many languages* regarding
> refactoring.

Chris, I might need a bit more education here. I am trying to guess
what you meant to say here is if in f2(), f or s is already defined,
it will then change the "usual" understanding. In this case, I am
assuming when you start to assign in f2() a local variable f or s with
an object that has __set/getself__(), then you know later on assigning
to it will mean differently. How is this different from descriptors?
when you do x.y = z and if y is a descriptor you don't expect x.y is
now pointing/binding to z, you have to understand the object behavior
anyway. I do not see how this is different in the set/getself() case.
_______________________________________________
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/2N7QGYNTQAIEYU6TOPVGFEZW4DZ56PHZ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to