Skip to main content

Object utils to make life easier

Project description

https://travis-ci.org/samjy/sloot.object.svg?branch=master

Basic usage

>>> from sloot.object import dictobj
>>> d = dictobj({'a': 'a', 'b': 'b'}, c='c')
>>> print(d)
dictobj({'a': 'a', 'b': 'b', 'c': 'c'})
>>> d.a
'a'
>>> d['a']
'a'
>>> d.a = 3
>>> d.a
3
>>> d['a'] = 42
>>> d.a
42
>>> print(d)
dictobj({'a': 42, 'c': 'c', 'b': 'b'})
>>> print(dict(d))
{'a': 42, 'c': 'c', 'b': 'b'}

Behavior of setattr in inherited objects

>>> class T(dictobj):
...   classvar = 'classvar'
...   def f(self):
...     return 'f'
...   @property
...   def prop(self):
...     return getattr(self, '_prop', 'prop')
...   @prop.setter
...   def prop(self, value):
...     self._prop = value
...
  • methods and class attributes are not overwritten and go to the dict:

    >>> t = T({'classvar': 1, 'f': 2, 'prop': 3})
    >>> t.classvar  # access the class attribute
    'classvar'
    >>> t['classvar']  # access the dict entry
    1
    >>> t.classvar = 5  # we don't overwrite class attributes, this goes to dict
    >>> t.classvar  # this is the class attribute
    'classvar'
    >>> t['classvar']
    5
    >>> t.f  # access the class method
    <bound method T.f of T({'classvar': 1, 'f': 2, 'prop': 3})>
    >>> t['f']  # access the dict entry
    2
    >>> t.f = 4  # we don't overwrite the method, this goes to the dict
    >>> t.f
    <bound method T.f of T({'classvar': 1, 'f': 2, 'prop': 3})>
    >>> t['f']
    4
  • properties getter and setter are used:

    >>> t.prop  # get the property
    'prop'
    >>> t['prop']  # get the dict entry
    3
    >>> t.prop = 'newprop'  # use property setter
    >>> t.prop
    'newprop'
    >>> t['prop']
    3
  • otherwise the dict is updated:

    >>> t.a = 42
    >>> t['a']
    42
    >>> t.a
    42

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

sloot.object-1.5.1.tar.gz (4.4 kB view hashes)

Uploaded Source

Built Distribution

sloot.object-1.5.1-py2.py3-none-any.whl (6.0 kB view hashes)

Uploaded Python 2 Python 3

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