Обнаружение членов объекта Ruby? - PullRequest
39 голосов
/ 20 января 2011

Какой простой способ узнать, какие методы / свойства предоставляет объект ruby?

В качестве примера, чтобы получить информацию об элементе для строки, в PowerShell вы можете сделать

"" | get-member

В Python,

dir("")

Есть ли такой простой способ узнать информацию об элементе объекта Ruby?

Ответы [ 6 ]

55 голосов
15 голосов
/ 21 января 2011

Ruby не имеет свойств. Каждый раз, когда вы хотите получить доступ к переменной экземпляра в другом объекте, вы должны использовать метод для доступа к нему.

11 голосов
/ 20 января 2011

Два способа получить методы объекта:

my_object.methods
MyObjectClass.instance_methods

Одна вещь, которую я делаю, чтобы обрезать список унаследованных методов от базового класса Object:

my_object.methods - Object.instance_methods

Чтобы вывести список объектаатрибуты:

object.attributes
4 голосов
/ 29 апреля 2016

Есть два способа сделать это:

obj.class.instance_methods(false), где 'false' означает, что он не будет включать методы суперкласса, например, имея:

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"

другой с:

p1.instance_variables # => [:@name]
p1.instance_variable_get :@name # => "simon"
3 голосов
/ 21 декабря 2015

Используйте это:

my_object.instance_variables
2 голосов
/ 20 января 2011
object.methods

вернет массив методов в объекте

...