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. :=)