Turn any object into dict in Python 3

The key idea in turning an object to accept dict-like access mechanism is to inherit that class from a dict and provide methods for setting, getting, and deleting the keys of the dictionary-like object.

Here's a working example

        

class DictLikeObject(dict):
  def __init__(self):
    self.a_regular_attribute = 'blah'
    self['some_key'] = 'bar'

  def some_method(self, arg1, **kwargs):
    do_something()

  def __setattr__(self, key, value):
    self[key] = value

  def __getattr__(self, key):
    if key in self:
      return self[key]
    else:
      raise AttributeError("No such attribute: " + key)

  def __delattr__(self, key):
    if key in self:
      del self[key]
    else:
      raise AttributeError("No such attribute: " + key)

      
  

There, you have it. You own dict like object. You can define regular attributes and methods. For example, see a_regular_attribute and some_method in the class definition above.

You can also initialize some dict-like members. For example, see see some_key.

You can also create attributes on the fly as shown in the following snippet.

        

  dlo = DictLikeObject()
  dlo['new_key'] = 'foo'