An attribute is a unit of information that a semel knows about itself.
Each attribute has a name.
Each attribute has a type.
The type of an attribute is one of the following:
Each attribute optionally has a default value.
Attributes are initialized with their default value when a new semel is created.
You can change the value of an attribute.
Each semel has 0 or more attributes.
A semel inherits all of the attributes of all of its base semels (just as a class inherits all of the attributes of all of its base classes).