web-dev-qa-db-fra.com

Découvrir les membres de l'objet Ruby?

Quel est un moyen simple de découvrir quelles méthodes/propriétés un objet Ruby expose?

Par exemple, pour obtenir des informations sur les membres d'une chaîne, dans PowerShell, vous pouvez faire

"" | get-member

En Python,

dir("")

Existe-t-il un moyen si simple de découvrir les informations sur les membres d'un objet Ruby?

42
dance2die
59
noodl

Ruby n'a pas de propriétés. Chaque fois que vous souhaitez accéder à une variable d'instance dans un autre objet, vous devez utiliser une méthode pour y accéder.

18
Andrew Grimm

Deux façons d'obtenir les méthodes d'un objet:

my_object.methods
MyObjectClass.instance_methods

Une chose que je fais pour élaguer la liste des méthodes héritées de la classe de base Object:

my_object.methods - Object.instance_methods

Pour répertorier les attributs d'un objet:

object.attributes
11
Mark Thomas

Utilisez ceci:

my_object.instance_variables
5
Nimo

Il y a deux façons d'y parvenir:

obj.class.instance_methods(false), où 'false' signifie qu'il n'inclura pas les méthodes de la superclasse, donc par exemple ayant:

class Person
  attr_accessor :name
  def initialize(name)
    @name = name
  end
end

p1 = Person.new 'simon'
p1.class.instance_methods false # => [:name, :name=]
p1.send :name # => "simon"

l'autre est avec:

p1.instance_variables # => [:@name]
p1.instance_variable_get :@name # => "simon"
4
sescob27
object.methods

renverra un tableau de méthodes dans l'objet

2
Arnaud Le Blanc