ObjDict v.1.0 — Словарь как объект

После длительного общения с JS, в Python, иногда, разобрав очередной JSON в словарь мне очень не хватало обращения к его вложенным элементам используя точечную нотацию (как у объектов, в JS ведь все объекты).

Хотелось вместо громоздкого json[’a’][’b’][’c’] использовать изящное json.a.b.c обращение.

Представляю вашему вниманию простой класс-обертку на базе базовых словарей, достаточно просто «обернуть» им словарь, после чего, к нему можно обращаться как к объекту используя точечную нотацию как у JS.

Класс objdict — расширяет dict, позволяя обращаться к его свойствам, как к атрибутам object-a, но при этом, сохраняя его полноценным dict-ом.

class objdict(dict):

    def __init__(self, *args, **kwargs ):
        dict.__init__(self, *args, **kwargs )
        for key, value in self.items():
            if isinstance(value, dict):
                self[key] = objdict(value)

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

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

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

Пример использования dot-нотации (присваивание тоже доступно):

>>> my_dict = {'a': {'b': {'c': 'OK'}}}
{'a': {'b': {'c': 'OK'}}}

>>> my_dict.a.b.c # пример ошибки
AttributeError: 'dict' object has no attribute 'a'

>>> my_objdict = objdict(my_dict) # преобразуем в objdict

>>> my_objdict # внешне остается таким же словарем, но...
{'a': {'b': {'c': 'OK'}}}

>>> my_objdict.a.b.c # получить свойство на 3-м уровне проще простого
'OK'

>>> my_objdict.a.b = 'END' # задать или удалить значение тоже не составляет труда
>>> my_objdict.a.b
{'a': {'b': 'END'}}

@ToDo: В версии 1.1 планирую добавить .get() обработчик с форматом objdict.get(’a.b.c’, ’default value’) для получения значения без необходимости перехвата AttributeError, будет еще более удобным для работы c JSON.

11 комментариев
WarnerTub

http://bystrokredit24.ru/tag/zajm-onlajn-na-chuzhuyu-kartu — займ онлайн на чужую карту
100% ФИНАНСОВАЯ ПОМОЩЬ ВСЕМ!
http://bystrokredit24.ru/kameshkovo-pomoshh-v-poluchenii-kredita-s-otkatom — Камешково помощь в получении кредита с откатом

Williamknish

Сезонная распродажа Ray-Ban по ценам производителя
http://bit.ly/2F23Wh1

Cesarsaito

http://bit.ly/2Iiymgx Монокуляр ночного видения и часы Patek Philippe Geneve в подарок (1690)
Новый сверхмощный монокуляр Bushnell с функцией ночного видения — незаменимая вещь для наблюдения на рыбалке и охоте. Поле зрения: 8 км, кратность увеличения: 16Х.
Каждому покупателю — часы в подарок.

DavidatokE

http://bit.ly/2K4eieA
Эпилятор Yes Finishing Touch
Превосходный эпилятор, помогающий избавиться даже от самых жестких волос на любых участках тела. Регулярное применение устройства способствует истончению и ослаблению волосков, в результате чего они перестают расти!

WarnerTub

http://bystrokredit24.ru/tag/pomoshh-v-poluchenii-kredita-v-kaluge — помощь в получении кредита в калуге
100% ФИНАНСОВАЯ ПОМОЩЬ ВСЕМ!
http://bystrokredit24.ru/akibank-onlajn-zayavka-na-kredit — Акибанк онлайн заявка на кредит

Cesarsaito

http://bit.ly/2Iiymgx Монокуляр ночного видения и часы Patek Philippe Geneve в подарок (1690)
Новый сверхмощный монокуляр Bushnell с функцией ночного видения — незаменимая вещь для наблюдения на рыбалке и охоте. Поле зрения: 8 км, кратность увеличения: 16Х.
Каждому покупателю — часы в подарок.

Williamknish

Сезонная распродажа Ray-Ban по ценам производителя
http://bit.ly/2F23Wh1

GeorgeDeM

http://bit.ly/2IdcinA Щетка для удаления шерсти FUR WIZARD и перчатка для расчёсывания шерсти в подарок
Щетка Fur Wizard — это компактный прибор для сбора шерсти, комочков пуха и волосков. Поверхность ролика покрыта материалом с большим количеством мелких щетинок, которые цепляют все загрязнения и втягивают их в специальный контейнер.
Fur Wizard очищает любые поверхности одним движением!

Williamusase

http://bit.ly/2IH9Q8m Гелевые перчатки и носочки для spa ухода за руками и ногами
Инновационные гелиевые носки и перчатки на основе натуральных компонентов для ухода за кожей рук и ног.
Питают и тонизируют кожу, восстанавливают ее эластичность и упругость, способствуют профилактике грибковых заболеваний.

Guestwourl

guest test post
<a href=» http://temresults2018.com/ «>bbcode</a>
<a href=«http://temresults2018.com/»>html</a>
http://temresults2018.com/ simple

Cesarsaito

http://bit.ly/2Iiymgx Монокуляр ночного видения и часы Patek Philippe Geneve в подарок (1690)
Новый сверхмощный монокуляр Bushnell с функцией ночного видения — незаменимая вещь для наблюдения на рыбалке и охоте. Поле зрения: 8 км, кратность увеличения: 16Х.
Каждому покупателю — часы в подарок.  http://bit.ly/2IGTglR

Ваш комментарий
адрес не будет опубликован

ХТМЛ не работает

Ctrl + Enter
Популярное