Schemas extend the notion of interfaces to detailed descriptions of
Attributes (but not methods). Every schema is an interface and
specifies the public fields of an object. A *field* roughly
corresponds to an attribute of a Python object. But a Field provides
space for at least a title and a description. It can also constrain
its value and provide a validation method. Besides you can optionally
specify characteristics such as its value being read-only or not
See http://docs.zope.org/zope.schema/ for more information.