property decorator?

Chris Angelico rosuav at gmail.com
Wed Dec 20 22:44:49 EST 2017


On Thu, Dec 21, 2017 at 2:38 PM, Ian Kelly <ian.g.kelly at gmail.com> wrote:
> On Wed, Dec 20, 2017 at 5:56 PM, Irv Kalb <Irv at furrypants.com> wrote:
>> 2)  Alternatively, if the getter was going to use the @property decorator, then it would seem complimentary  to have the decorator name for the associated setter function to have the word "property" in its also, something like @propertySetter.
>
> Perhaps this could have been done, but unlike the getter, the setter
> is being defined on a property that now already exists. In this case
> <name> has to be referenced somewhere within the decorator or else the
> setter property will simply replace the getter property, rather than
> augment and then replace it.
>
> I suppose what it boils down to is that there's no particular reason
> to look up "property" again since the getter already declared that
> this is a property.

It's more than that. It's actually not easy to locate something by its
name while you're in process of setting it up. Consider:

class Demo:
    @getter
    def foo(self):
        ...
    @setter
    def foo(self, value):
        ...

Only one thing can be bound to Demo.foo, which means that that one
thing has to be a property capable of calling on the getter and the
setter. That means that when setter(foo) is called, it would need to
locate the pre-existing "foo" property and augment it. That's actually
pretty hard to do reliably (remember that there are many contexts in
which this can be called).

ChrisA



More information about the Python-list mailing list