Paul, Correct: they started that section with a fully initialized class, but later wrote it as I pasted it. Great example of extending the class, but I got the impression that they redefined the to_s method. Did they actually extend it too ? Thanks for the thorough response, Mike Paul Mckibbin wrote in post #980856: > Mike Onofrietto wrote in post #980715: >> Hello World. >> This is my first forum membership, and first post. >> I am learning Ruby. >> It seems to be a very elegant an encompassing OO language. >> I'm reading Thomas & Hunt: Classes, Objects, and Variables on-line. >> >> See attached. >> >> Regarding the following by the authors, and attached I see no >> correlation. >> However I've had very good results with attr_accessor. >> Please help. >> > In your test code, and the attachment, you don't have an initialize > function, which is defined in the first page of that section of the > book: > > i.e. > > class Song > def initialize(name, artist, duration) > @name = name > @artist = artist > @duration = duration > end > end > > The way Ruby works is that if this is defined, even if you have a new > class block i.e. > > class Song > def name; @name; end > def artist; @artist; end > def song; @song; end > end > > that doesn't overwrite the previous definition. It EXTENDS it. So now > your class should be (in memory anyway) equivalent to: > > class Song > def initialize(name, artist, duration) > @name = name > @artist = artist > @duration = duration > end > > def name; @name; end > def artist; @artist; end > def song; @song; end > end > > Without the initialization, you are calling the base class > Object.new(*arr) method, which will not assigned any class variables for > you, regardless of whether you use attr_x methods or not. > > Mac. -- Posted via http://www.ruby-forum.com/.