「プログラミング Ruby 第2版」p142より
クラス定義内では、setter=は、メソッド呼び出しではなくローカル変数への代入とみなされる。メソッド呼び出しであることを示すには、self.setter=を使う。
class Incorrect attr_accessor :one, :two def initialize one = 1 # 間違い。これではローカル変数への代入とみなされる self.two = 2 end end obj = Incorrect.new obj.one → nil obj.two → 2