From: Brian Candler Date: 2007-03-02T06:12:40+09:00 Subject: Re: Newbie Question On Fri, Mar 02, 2007 at 05:20:11AM +0900, james.d.masters@gmail.com wrote: > Something that is unique to a class but inherits with nice syntax is > what I'd like to see (and I'm fairly sure is the behavior used in > other OOP languages). For example, assume that the behavior that I'm > referring to uses a triple "@" prefix to initialize ("@@@"). Then: > > class A > @@@per_class = 1 > attr_accessor :per_class > end > > A.per_class #=> 1 > > class B < A > end > > B.per_class #=> 1 > B.per_class = 2 #=> 2 > A.per_class #=> 1 So how would it work? B.per_class and A.per_class are clearly different, since they end up pointing at different objects. Does the fact that @@@per_class is undefined in B mean that the value in A is used? In that case, you need something like a class hierarchy search to find the instance variable. How about this: class A def self.per_class self.ancestors.each { |k| k.instance_eval { return @per_class if defined? @per_class } } end def self.per_class=(x) @per_class=x end end puts "hello" A.per_class = 1 class B