如果希望在一个类中存储一个变量,那么除了【类实例变量】之外,还可以用以@@开头的【类变量】: 

class C
  @@v=1
end

类变量与类实例变量不同,它们可以被子类或类的实例所使用。 

class D < C
  def my_method; @@v; end
end
D.new.my_method   #=>1

但请注意:类变量有一个缺陷: 

@@v=1
class MyClass
  @@v=2
end
@@v   #=>2

得到这样的结果是因为类变量并不真正属于类,它们属于类体系结构。由于@@v定义于main的上下文,它属于main的类Object,所以也属于Object的后代。
MyClass继承自Object,因此它共享了这个类变量。
由于存在这样的“陷阱”,应尽量避免使用类变量,而尽可能使用类实例变量。