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


Download files

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

Source Distribution

kwargs_obj-1.0.0.tar.gz (4.2 kB view details)

Uploaded Source

File details

Details for the file kwargs_obj-1.0.0.tar.gz.

File metadata

  • Download URL: kwargs_obj-1.0.0.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for kwargs_obj-1.0.0.tar.gz
Algorithm Hash digest
SHA256 acf094120268beb105eae4b28126697abdf3db39387fd2e85c75de2b615097ba
MD5 8cbb310a16d1fd072369c4dd67f49bbd
BLAKE2b-256 3973c16fa20b1c36c7eb3ac9eb4e6a48bff25311987482726e95c5220a5f2ad4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page