A Sheeple object can have zero or more “properties”. Properties index data held by an object with a symbol. They can be added, removed, and changed at any time for standard Sheeple objects. Additionally, descendants can access properties available somewhere in their precedence list.
Available properties can be accessed in a number of ways. The core method of
doing so is the “property-value” function, which returns a property
value indexed by an index. direct-property-value may also be used, and it
will not trigger delegation. If a property is accessed with either of these, but
it is not available, an error of type UNBOUND-PROPERTY is signaled.
A property may be added to an existing Sheeple object by simply setting it with (setf property-value). This function will change the value of an existing property, or add a brand new property to the object and set the value if it did not already exist.
A property existing directly on a Sheeple object may be removed by using property-makunbound, or all direct properties may be removed using remove-all-direct-properties.
Finally, Sheeple provides some convenient mechanisms for inspecting and exploring the properties of an object, and information about those properties. direct-properties and available-properties may be used to retrieve a list of names associated with the properties of an object. Using DESCRIBE on the object provides a more helpful interactive interface to inspecting properties, as well.