Skip to main content

Attribute access for dictionary-like objects

Project description

https://github.com/knowikow/ya.dotdict.py/workflows/build/badge.svg

Yet Another DotDict

A Python library providing attribute access for dictionaries. The library provides these classes:

  • ya.dotdict.DotDict as a replacement for dict and collections.defaultdict
  • ya.dotdict.DotDictMixin: a mixin class that can be used to add attribute-style access to any dict-like class. ya.dotdict.DotDict is implemented in terms of this mixin class

All the code examples assume:

>>> from ya.dotdict import *

Simple use case: access dictionary items as attributes

DotDict can be used as a replacement for dict:

>>> d = DotDict()
>>> d['spam'] = 'eggs'
>>> d.spam
'eggs'
>>> d.spam = 100
>>> d['spam']
100

Deleting attributes also works as expected:

>>> del d.spam
>>> d.spam
Traceback (most recent call last):
   ...
AttributeError: spam

Create default values (like collections.defaultdict)

DotDict can be used as a replacement for defaultict:

>>> d = DotDict(lambda: 'eggs')
>>> d.spam
'eggs'
>>> d.spam = 100
>>> d['spam']
100
>>> d._default_factory = lambda: 'foo'
>>> d.bar
'foo'

If the default value factory takes an argument, then the key is passed to it:

>>> d._default_factory = lambda key: [key, 1000]
>>> d.foo
['foo', 1000]

If the default value factory takes more than one argument, a TypeError will be raised:

>>> d._default_factory = lambda x, y: [x, y]
Traceback (most recent call last):
   ...
TypeError: defult_factory can only take zero or one argument

DotDictMixin

A mixin class to provide attribute access to dict-like classes. DotDict is implemented using DotDictMixin like this:

class DictClass(DotDictMixin, dict): pass

Project details


Download files

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

Files for ya.dotdict, version 1.0.2
Filename, size File type Python version Upload date Hashes
Filename, size ya.dotdict-1.0.2.tar.gz (4.0 kB) File type Source Python version None Upload date Hashes View
Filename, size ya.dotdict-1.0.2-py3-none-any.whl (3.8 kB) File type Wheel Python version py3 Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page