Не найдя ничего подходящего, как часть проекта, с которым сейчас работаю, склепал небольшую библиотеку. Вернее, склепал я её давно (спасибо ZAN'у за экскурс по метаклассам), но сейчас отладил и выложил как отдельный пакет.
http://www.python.org/pypi/structures
Вот что она умеет:
>>> from structures import *
>>>
>>> class S(Structure):
... i = Integer
... s = String
... b = Boolean(True)
... l = List
...
>>> s = S()
>>> s.i = '1'
>>> assert s.i == 1
>>> s.s = 'qwerty'
>>> s.s
u'qwerty'
>>> s.b
True
>>> s.b = []
>>> s.b
False
>>> s.b = 10
>>> s.b
True
>>> s.l
AttributeError: l
>>> s.l = (1, 2, 3)
>>> s.l
[1, 2, 3]
>>>
Так же, без проблем можно наследоваться от структур.
TODO:
1. Описать типы работы со временем.
2. Доработать рекурсивные структуры (чтобы присваивание словаря к атрибуту типа “структура” проходило через from_pickle).
3. Документация – у меня вечная проблема, ибо писать ин инглиш для меня тяжеловато… Я бы с радостью принял помощь по этому пункту.
P.S. Хм… Это уже без меня: http://linux.softpedia.com/get/Programming/Libraries/Structures-50010.shtml