Ruby のインスタンス変数は、オブジェクトの内部状態でもあるし、オブジェクトに特定されたクラス内のグローバル変数みたいなものでもあるのだな(言い方に問題あり?)。オブジェクトに関係ないクラス内のグローバル変数がクラス変数ということか。
class A def initialize @a = 3 end attr_accessor :a def out puts @a inc end def inc @a += 1 end end i = A.new i.out #=>3 i.out #=>4 p i #=> #<A:*** @a=5> i.a = 10 i.out #=>10 i.inc i.out #=>12
inc
メソッドは、クラスの中からも外からも呼ばれている。中からは裸で、外からはレシーバーを付けて呼ばれていることに注意。