Object utils to make life easier
Project description
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.4.0.tar.gz
(5.0 kB
view hashes)
Built Distribution
Close
Hashes for sloot.object-1.4.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac2908c0d50de3501129db484576f900fb3717e6527c46a1943e9b08b0c8167d |
|
MD5 | 42c1585918c257b3b8d1fa8410d63e8a |
|
BLAKE2b-256 | d61eb69eed7fc9958dad658bebe0c8acb4f6c28df02f37223514adecc85ede76 |