Rubyリファレンス: Home

private_methods (Object)

Edit   History

標準クラス・モジュール > Object > private_methods

obj.private_methods(all = true)

private_methodsメソッドは、レシーバのprivateなメソッドの名前を集めて配列にして返します。レシーバのクラスのメソッドだけでなく、親クラスやインクルードしているモジュールのメソッドも含まれます。引数にfalseを指定すると、レシーバのクラスのメソッドだけが返ります。

Ruby 1.9 Ruby 1.8では配列中のメソッド名は文字列ですが、Ruby 1.9ではシンボルになります。

次の例のように引数なしでprivate_methodsメソッドを呼んだときは、配列にKernelモジュールのputsメソッドなどが含まれます。Catクラスの親クラスはObjectクラスで、ObjectクラスはKernelモジュールをインクルードしているためです。

class Cat
  def meow
    "meow!"
  end
  
  private
  def purr
    "purr..."
  end
end
 
cat = Cat.new
p cat.private_methods
p cat.private_methods(false)
["select", "global_variables", "puts", "warn", "initialize", (中略) "scan"]
["purr"]   (Ruby 1.8の場合)
[:purr, :require_relative, :initialize_copy, (中略)  :method_missing]
[:purr]    (Ruby 1.9の場合)

関連項目