Thanks for pointing out the existence of Object#instance_variable_set (which, of course, Ruby ri v1.8b knows about). But then I think Ruby should have a method Object#attribute_set (and then also a method Object#attribute_get of course), so that we can set accessible atributes directly so that we are able to say: Person.new( :name => 'John', :born => '2003') # (1) rather than Person.new(:@name => 'John', :@born => '2003') # (2) or even Person.new(:name= => 'John', :born= => '2003') # (3) I this respect, I think it is relevant to quote a 1993 post of Matz [ http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/68955 ], where he says: >Subject: Re: instance_variable_set question >Newsgroups: comp.lang.ruby >Date: 2003-04-09 01:32:15 PST > > >Hi, > >In message "Re: instance_variable_set question" > on 03/04/09, Phil Tomson <ptkwt / shell1.aracnet.com> writes: >| >|It _is_ a bit confusing, though - if you made an attr_accessor for @bar, >|you refer to it as :bar, not :@bar : > >You're specifying attribute names (i.e. exporting method names), which >does not contain "@" in them, not instance variable names. >attr_accessor defines methods that use instance variables which names >are "@"+attribute-name. > > matz. I think a method Object#attribute_set should exist, to enable straight and dynamic access to attributes when we want to, and to avoid counterintuitive calls like (2) or (3) in such cases. What do you think? Thanks. Gerard