Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding an attribute to a Python dictionary from the standard library

I was wondering if you could add an attribute to a Python dictionary?

class myclass():
    def __init__(): 
     self.mydict = {}  # initialize a regular dict
     self.mydict.newattribute = "A description of what this dictionary will hold"
     >>> AttributeError: 'dict' object has no attribute 'newattribute'
     setattr(self.mydict, "attribute", "A description of what this dictionary will hold"
     >>> AttributeError: 'dict' object has no attribute 'newattribute'

Is there anyway to quickly add my description attribute without having to copy the dict class and overloading the constructor. I thought it would be simple, but I guess I was wrong.

like image 759
jwillis0720 Avatar asked Jul 17 '12 23:07

jwillis0720


People also ask

What is attribute in dictionary Python?

AttrDict , Attribute Dictionary, is the exact same as a python native dict , except that in most cases, you can use the dictionary key as if it was an object attribute instead. This allows users to create container objects that looks as if they are class objects (as long as the user objects the proper limitations).


1 Answers

Just derive from dict:

class MyDict(dict):
    pass

Instances of MyDict behave like a dict, but can have custom attributes:

>>> d = MyDict()
>>> d.my_attr = "whatever"
>>> d.my_attr
'whatever'
like image 130
Sven Marnach Avatar answered Sep 25 '22 01:09

Sven Marnach