54

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

作为获取字符串成员信息的示例,在 PowerShell 中,您可以执行

"" | get-member

在 Python 中,

dir("")

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

4

6 回答 6

22

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

于 2011-01-20T22:14:30.793 回答
15

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

my_object.methods
MyObjectClass.instance_methods

我要做的一件事是修剪从 Object 基类继承的方法列表:

my_object.methods - Object.instance_methods

列出对象的属性:

object.attributes
于 2011-01-20T13:05:16.340 回答
7

用这个:

my_object.instance_variables
于 2015-12-21T15:53:40.387 回答
7

有两种方法可以做到这一点:

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"
于 2016-04-29T16:10:28.570 回答
2
object.methods

将返回对象中的方法数组

于 2011-01-20T12:29:26.653 回答