Dan Weinreb wrote:
"At least one reason, and maybe the only reason,
is that the initial value is figured out in a way
that may depend on class precedence."

Well, another reason is that they're associated with the class, and can thus be introspected as part of some protocol where you supply a class as an argument.

I'm not recommending that or anything. You would be better off designing some sort of specification object which included both a class AND those values. I'm just pedantically addressing your "only reason" speculation. :=)