Completed
Push — master ( 394368...090fba )
by Raphael
01:33
created

MapDict   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 32
rs 10
wmc 11

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __getattr__() 0 2 1
B __init__() 0 10 6
A __delitem__() 0 3 1
A __setitem__() 0 3 1
A __setattr__() 0 2 1
A __delattr__() 0 2 1
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3
4
5
class MapDict(dict):
6
    """
7
    Example:
8
    m = Map({'first_name': 'Eduardo'}, last_name='Pool', age=24, sports=['Soccer'])
9
    """
10
    def __init__(self, *args, **kwargs):
11
        super(MapDict, self).__init__(*args, **kwargs)
12
        for arg in args:
13
            if isinstance(arg, dict):
14
                for k, v in arg.items():
15
                    self[k] = v
16
17
        if kwargs:
18
            for k, v in kwargs.items():
19
                self[k] = v
20
21
    def __getattr__(self, attr):
22
        return self.get(attr)
23
24
    def __setattr__(self, key, value):
25
        self.__setitem__(key, value)
26
27
    def __setitem__(self, key, value):
28
        super(MapDict, self).__setitem__(key, value)
29
        self.__dict__.update({key: value})
30
31
    def __delattr__(self, item):
32
        self.__delitem__(item)
33
34
    def __delitem__(self, key):
35
        super(MapDict, self).__delitem__(key)
36
        del self.__dict__[key]