Ruby解释器假定所有的实例变量都属于当前对象self。在类定义时也是如此(在Ruby中类也是对象): 

class MyClass
  @my_var = 1
end

在类定义的时候,self的角色由类本身担任,因此实例变量@my_var 属于这个类。
注意! 类的实例变量不等同于类的对象的实例变量,请看下面的例子: 

class MyClass
  @my_var = 1
  def self.read; @my_var; end
  def write; @my_var = 2; end
  def read; @my_var; end
end
obj = MyClass.new
obj.write
obj.read      # => 2
MyClass.read     # => 1

上面的代码定义了两个实例变量,它们正好都叫做 @my_var, 但是他们分属于不同的作用域,并属于不同的对象。
其中一个@my_var定义于obj充当self的时刻,因此它是obj对象的实例变量。
另外一个@my_var定义于MyClass充当sefl的时刻,因此它是MyClass的实例变量------也就是类实例变量。
类实例变量是属于Class类对象的普通实例变量,它仅仅可以被类本身所访问,而不能被类的实例或子类所访问。