Python модуль для создания древовидной структуры даных на лету

Хочу представить на суд общественности модуль, который позволяет создавать древовидные структуры на лету. Сначала пример, потом сам модуль. Вопросы по модулю смело задавайте в комментариях к посту.

Пример использования

# -*- coding: utf-8 -*-
import cPickle as pickle
from Dictionary import Dictionary
 
# Создаем пустой объект "animalsDict"
animalsDict = Dictionary()
 
# Добавляем ветку "cats" и ноду "wild" со значением "Tiger"
animalsDict.cats.wild = 'Tiger'
# К ветке "cats" добавляем ноду "home" со значение "House"
animalsDict.cats.home = 'House'
# Добавляем ветку "dogs" одной строкой с нодами "wild" и "home"
animalsDict.dogs = Dictionary(wild='wolf', home='House')
# Выводим данные с префиксом "animals"
print "before dump:"
animalsDict.printf('animals')
 
# Сохраняем объект "animalsDict" в строку
data = pickle.dumps(animalsDict)
# Восстанавливаем данные в объект "animalsRestored"
animalsRestored = pickle.loads(data)
 
# Выводим данные с префиксом "animals2"
print
print "after dump:"
animalsRestored.printf("animals2")
 
# Удаляем ветку cats
del animalsRestored.cats
 
# Повторно выводим данные
print
print "after remove:"
animalsRestored.printf("animals2")
 
# Создаем объект только для чтения
p = Dictionary(read_only=True, x=2, y=3.5, z=1.0)
 
# Выводим объект "p" с префиксом "point"
print
print "read only:"
p.printf("point")
 
# Если это раскомментировать, будет исключение типа KeyError
# del p.x

Вывод

before dump:
animals.cats.home = House
animals.cats.wild = Tiger
animals.dogs.home = House
animals.dogs.wild = wolf
 
after dump:
animals2.cats.home = House
animals2.cats.wild = Tiger
animals2.dogs.home = House
animals2.dogs.wild = wolf
 
after remove:
animals2.dogs.home = House
animals2.dogs.wild = wolf
 
read only:
point.x = 2
point.y = 3.5
point.z = 1.0

Модуль Dictionary.py

Добавить комментарий

Ваш e-mail не будет опубликован.