The traits package developed by Enthought provides a special type
definition called a trait. Although they can be used as normal Python object
attributes, traits also have several additional characteristics:
* Initialization: A trait can be assigned a default value.
* Validation: A trait attribute's type can be explicitly declared.
* Delegation: The value of a trait attribute can be contained either
in another object.
* Notification: Setting the value of a trait attribute can trigger
notification of other parts of the program.
* Visualization: User interfaces that permit the interactive
modification of a trait's value can be automatically constructed
using the trait's definition.