Let me correct a wrong statement:
On Thu, Dec 10, 2009 at 08:32:38AM +0100, Alexander Burger wrote:
> The reason is that all inheritance mechanisms (message passing,
> lookup with 'meta', 'var:', etc) start searching one level above the
> current object.
This is only true for 'meta' and derived functions, which search for a
property in the classes and superclasses of a symbol.
In case of messages, however, the search for a method starts in the
object, and then continues in the classes and superclasses. Methods are
not stored in properties, but in an assoc list in the object's or
class's value cell.
This was a deliberate design decision. It should be possible for an
object to override a method privately. But "class variables" (the
properties in classes and superclasses) should
1. really reside in classes, and
2. not conflict with local attributes of objects
Therefore the term (or (: name) (var: name)) must be used explicitly if
both places should be searched.