Skip to main content

Class that maps .__init__(self, **kwargs) to attributes.

Project description

kwargs_obj

https://badge.fury.io/py/kwargs_obj.png https://pypip.in/d/kwargs_obj/badge.png

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
kwargs_obj-1.0.0.tar.gz (4.2 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page