Makes read only attributes for a Python class
Project description
Read Only Attributes
Info:
This package makes class attributes read only.
Motivation:
We can make read only attributes using @property
. But this can be verbose. Worse, the intent is not clear as in these attributes are meant to be read-only.
Like as below
class MyClass:
@property
def x(self):
return 'immutable 1'
@property
def y(self):
return 'immutable 2'
@property
def z(self):
return 'immutable 3'
@property
def w(self):
return 'immutable '
The above can be written like so which is much less verbose and lot more explicit:
@read_only_attributes('x','y','z','w')
class MyClass:
def __init__(self, x, y, z, w):
self.x = x
self.y = y
self.z = z
self.w = w
Once the instance attributes are assigned in the _init_, they cannot be changed. Trying to change them will raise an AttributeError
.
Installation:
pipenv install read-only-properties
Usage:
import class decorator @read_only_attributes and use like so:
from roa import read_only_attributes
@read_only_attributes('x', 'y')
class MyClass:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
That's it. There us no need to use @property
.
'x' and 'y' are now readonly attributes. If we try to change them, AttributeError
exception will be raised.
Since 'z' is not in decorator argument list, self.z
is a mutable instance attribute.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for read_only_attributes-1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51644065380cad0e7216173f557a3de952392087cf899da42e151ef26286bfeb |
|
MD5 | ec10fa2726f3e01b5e089f07ccfa7bab |
|
BLAKE2b-256 | c70fd03c6bcf88b6a12bbb2dbce4bbfc77f066c16322797651f464b7ebd1a5c3 |