On Thu, Jul 2, 2020 at 8:38 PM Greg Ewing <greg.ew...@canterbury.ac.nz> wrote: > > On 2/07/20 9:45 pm, Chris Angelico wrote: > > On Thu, Jul 2, 2020 at 7:41 PM Alex Hall <alex.moj...@gmail.com> wrote: > >> > >> On Thu, Jul 2, 2020 at 11:33 AM Chris Angelico <ros...@gmail.com> wrote: > >>> > >>> What's the idea being discussed? AIUI there's no need or request to > >>> change the language/stdlib, but maybe I'm misreading. > >> > >> Ah, now I understand. I did automatically assume that Greg was proposing > >> adding this to the stdlib or something, but maybe I only assumed that > >> because it was in the list. > > > > Could be that I'm the one misunderstanding here, but only Greg can > > answer that question :) > > I was thinking something like it might become a candidate for stdlib > inclusion, if it wasn't universally hated for abusing the class > statement. >
Let's get concrete then. Suppose that the property constructor recognized a special one-argument form: if it has an fget attribute, it fetches its details from the fget, fset, fdel, and __doc__ attributes of that object. That way, it can be used in three ways: a standard constructor that does all the work with up to four arguments, the decorator form (which is the same as the one-arg form initially, but then you can use its setter decorator), and the class form. class Test: x = property(lambda self: 42, lambda self, val: print("Setting to", val)) @property def y(self): return 42 @y.setter def y(self, val): print("Setting to", val) # the theoretical one @property class z: def fget(self): return 42 def fset(self, val): print("Setting to", val) Since functions won't normally have fset attributes, this should be fairly safe - technically it'd be backward incompatible, but it's highly unlikely to break any real-world code. I don't write a lot of properties with setters, so I can't speak to the value of this, but it is at least plausible. (If you'd prefer to use "get" or "getter" or something in place of "fget", that would work fine. I used the same name as the keyword arg to property itself, but it can be anything.) 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/AVYCCI42LUQZFVODRCTL5YCFUJX4I5VC/ Code of Conduct: http://python.org/psf/codeofconduct/