From: Joel VanderWerf Date: 2007-03-27T12:34:14+09:00 Subject: Re: Class Variables for subclases... Sonny Chee wrote: > Hey Guys, > > Check out the following: > > class A > @@anobject = 'green' > def fun2 > @@anobject > end > end > > class B < A > @@anobject = 'blue' > def fun2 > @@anobject > end > end > > puts B.new.fun2 # blue > puts A.new.fun2 # blue > > So it looks like the subclass B is not defining its own class variable > but reusing A's class variable @@anobject. Is there a different way to > specify class variables to overcome this issue? > > Sonny. > You may find it more suitable to use instance variables in your class objects, and write accessors so you can get at them from instances of your classes. For example: class A @anobject = 'green' def self.anobject @anobject end def fun2 self.class.anobject end end class B < A @anobject = 'blue' end puts B.new.fun2 # blue puts A.new.fun2 # green Google (or search the list) for 'ruby class instance variable'. I think the 'traits' gem does this in a systematic way, though of course it's worth playing around to understand the concept first. -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407