I sometimes find myself doing something like this: class A def initialize(a, b, c) @a = a @b = b @c = c end end Of course there would be more to the class, but that initialize method seems a little redundant. Wouldn't it be neater to be able to do "def initialize(@a, @b, @c);end" and be done with it? I tried to do that on a whim, and got something like "formal argument cannot be an instance variable". I'm sort of a perpetual nuby here, so I'd like to hear why this isn't possible. I have a feeling that the alternative I propose makes no sense on some theoretical level that is beyond my feeble grasp. I guess it is because they are "formal arguments", so it wouldn't make sense to have them persist over the lifetime of the object the way instance variables normally do.