pytyp has something similar - http://www.acooke.org/pytyp/pytyp.spec.record.html#module-py... - although that is just part of a wider framework for types. pytyp will also do things like use type annotations to map from json to python objects, for example, or check types on function args, or work with isinstance():
>>> isinstance([1,2,None,4], Sequence(Option(int)))
True
[although explicit types are not really pythonic (no argument there!), pytyp tries, within the whole "evil" concept of "adding types to python", to be as "true to the language" as possible. there's a long explanation at http://www.acooke.org/pytyp.pdf]I released DStruct because it has been insanely useful in my work. Take it or leave it, but do so pragmatically: dogma is a terrible way to make decisions.
With that I must disagree :)
in other words, the library is the end result of a process of exploration of some ideas that interested me related to metadata and types in a dynamic language. it's not an attempt to make python like another language, although (of course) it borrows ideas from those languages (because people have already spent a lot of time thinking about how to make a type system orthogonal and elegant).
and because it's dynamic, metadata-based, uses reflection, and works with duck typing, pytyp's type checking is inefficient for global use. it makes more sense as a check when debugging than a global language feature.
It seems to compete (unfavorably) with namedtuples as well.