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/