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 read_only_attributes 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.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40b076a1693a311c1358b58ba06b566ec6414cb830d3a447a4a4353ff67b6b51 |
|
MD5 | 6a58ee91f217140ff082c004e114e825 |
|
BLAKE2b-256 | 6e96b01409bda0c85c6c2f63054d6b3103eedab8dd54b21fecf7383db52937ee |