发现Ruby对象成员?

时间:2011-01-20 12:25:38

标签: ruby discoverability

找出ruby对象公开的方法/属性的简单方法是什么?

作为获取字符串成员信息的示例, 在PowerShell中,你可以做到

"" | get-member

在Python中,

dir("")

有没有这么简单的方法来发现Ruby对象的成员信息?

6 个答案:

答案 0 :(得分:54)

答案 1 :(得分:15)

Ruby没有属性。每次要访问另一个对象中的实例变量时,都必须使用方法来访问它。

答案 2 :(得分:11)

获取对象方法的两种方法:

my_object.methods
MyObjectClass.instance_methods

我要做的一件事是从Object基类中删除继承的方法列表:

my_object.methods - Object.instance_methods

列出对象的属性:

object.attributes

答案 3 :(得分:4)

有两种方法可以实现这一目标:

Map<Integer,List<Integer>> = [3,list2],[2,list3] ,其中&#39; false&#39;意味着它不会包含超类的方法,例如:

obj.class.instance_methods(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"

答案 4 :(得分:2)

object.methods

将返回object

中的方法数组

答案 5 :(得分:2)

使用此:

my_object.instance_variables