Skip to main content

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")

Metadata

Release files for fproperty 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fproperty 0.2.0
File Size Uploaded
fproperty-0.2.0.zip 5.3 kB Details

Release files / fproperty-0.2.0.zip

Download URL fproperty-0.2.0.zip
Size 5.3 kB
Tags Source
SHA-256 checksum
How to use checksums
ac3c8ac0546be90416b5de5e00b3247a6144e320d26081d5e37b2006ab177b48
BLAKE2b-256 checksum
How to use checksums
d1e1521a59b697916a8c2337668457e1eeb3dc5537ddea42d608cd77dd63c061
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.1.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.3

Release history Release notifications | RSS feed

This release

0.2.0 This release

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page