Skip to main content

fproperty

Project description

fproperty - a simpler property decorator

Define the fget/fset/fdel functions and return them:

from fproperty import fproperty

class Thing:

    @fproperty
    def my_attribute():

        def fget(self):
            return self._attr

        def fset(self, value):
            self._attr = value

        def fdel(self):
            del self._attr

        return (fget, fset, fdel, "doc")

instead of property chaining:

class Thing:

    @property
    def my_attribute(self):
        return self._attr

    @my_attribute.setter
    def my_attribute(self, value):
        self._attr = value

    @my_attribute.deleter
    def my_attribute(self):
        del self._attr

which requires typing my_attribute five times, or by using the non-decorator case:

class Thing:

    def fget(self):
        return self._attr

    def fset(self, value):
        self._attr = value

    def fdel(self):
        del self._attr

    my_attribute = property(fget, fset, fdel, "doc")
    del fget, fset, fdel

which spreads out the definitions, and requires namespace cleanup.

Other examples

The fproperty decorator can be returned a partial list:

@fproperty
def set_only_attribute():
    def fset(self, value):
        self._value = value
    return (None, fset)

@property.apply

The property builtin can be substituted, and has .apply:

from fproperty import property

class Thing:
    @property.apply
    def attr():
        def g(self): pass
        return (g, )

Install

pip install fproperty

License

Licensed under the Apache License, Version 2.0 (the "License")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fproperty-0.2.0.zip (5.3 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page