privateなアクセサは例外的に「self.value = x」という形が許される
self.methodのように書くのもだめ
ぢつは例外がひとつだけ。
class Hoge private attr_accessor :value # !> private attribute? def foo() :hoge end public def hoge self.foo rescue $! # => #<NoMethodError: private method `foo' called for #<Hoge:0x83893f4>> self.value = 3 end end hoge = Hoge.new hoge.hoge # => 3 hoge # => #<Hoge:0x83893f4 @value=3>
メソッド名が「=」で終わるメソッド…つまりアクセサ…はprivateであっても「self.value = 〜」という形で呼び出せる。あまり知られてないかも。