106 votes

Obtenir la liste de la classe de méthodes d'instance

J'ai une classe:

class TestClass
  def method1
  end

  def method2
  end

  def method3
  end
end

Comment puis-je obtenir une liste des méthodes de cette classe (method1,method2,method3)?

124voto

Bijan Points 1193
TestClass.methods(false) 

pour obtenir uniquement les méthodes qui appartiennent à cette classe.

TestClass.instance_methods(false) serait de retour les méthodes à partir de votre exemple donné (puisque ce sont les méthodes d'instance de TestClass).

124voto

Andrew Grimm Points 22996

Vous voulez réellement TestClass.instance_methods, sauf si vous êtes intéressés par ce TestClass lui-même peut faire.

class TestClass
  def method1
  end

  def method2
  end

  def method3
  end
end

TestClass.methods.grep(/method1/) # => []
TestClass.instance_methods.grep(/method1/) # => ["method1"]
TestClass.methods.grep(/new/) # => ["new"]

Ou vous pouvez appeler methods (pas instance_methods) sur l'objet:

test_object = TestClass.new
test_object.methods.grep(/method1/) # => ["method1"]

40voto

Pavling Points 2188
TestClass.instance_methods

ou sans les méthodes héritées

TestClass.instance_methods - Object.methods

(A 'TestClass.méthodes de l'Objet.les méthodes')

7voto

Douglas G. Allen Points 359
$ irb --simple-prompt

class TestClass
  def method1
  end

  def method2
  end

  def method3
  end
end

tc_list = TestClass.instance_methods(false)
#[:method1, :method2, :method3]
puts tc_list
#method1
#method2
#method3

5voto

J-_-L Points 4952

Vous pouvez obtenir une liste plus détaillée (par exemple, structuré par la définition de la classe) avec des pierres précieuses comme le débogage ou looksee.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X