Class that maps .__init__(self, **kwargs) to attributes.
Project description
kwargs_obj
Class that maps .__init__(self, **kwargs) to attributes.
Documentation
This module can be used to automatically set values from **kwargs to attributes, and also to dissable setting of unset attributes.
Examples
Map **kwargs to attributes
Here you can see, how to map **kwargs to your attributes:
class Xex(KwargsObj):
def __init__(self, **kwargs):
self.something = None
self.something_else = None
self._kwargs_to_attributes(kwargs)
This will allow to pass parameters which sets something_else and something_different:
>>> x = Xex(something=True)
>>> x.something
True
Setting of unset attributes is dissabled:
>>> x = Xex(asd=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in __init__
File "kwargs_obj/kwargs_obj.py", line 61, in _kwargs_to_attributes
"Can't set %s parameter - it is not defined here!" % key
ValueError: Can't set asd parameter - it is not defined here!
Disable setting of unset attributes
There is also modified .__setattr__()` method, which disables to set new attributes. This may be good idea for data containers.
Modified .__setattr__() functionality can be triggered by setting the ._all_set attribute:
class Xex(KwargsObj):
def __init__(self):
self.something = None
self.something_else = None
self._all_set = True
It will be now impossible to set new attributes, which may be good for preventing typos:
>>> x = Xex()
>>> x.asd = True
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "kwargs_obj/kwargs_obj.py", line 50, in __setattr__
raise ValueError("%s is not defined in this class!" % name)
ValueError: asd is not defined in this class!
But you can still redefine already defined attributes:
>>> x.something = True
>>>
Changelog
1.0.0
Added tests.
Added documentation.
Package uploaded to pypi.
0.1.0
Project created.
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.