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