54

ruby オブジェクトが公開しているメソッドやプロパティを簡単に調べる方法は?

文字列のメンバー情報を取得する例として、PowerShell で次のことができます。

"" | get-member

パイソンでは、

dir("")

Ruby オブジェクトのメンバー情報を簡単に見つける方法はありますか?

4

6 に答える 6

72
"foo".methods

見る:

http://ruby-doc.org/core/classes/Object.html

http://ruby-doc.org/core/classes/Class.html

http://ruby-doc.org/core/classes/Module.html

于 2011-01-20T12:30:07.860 に答える
22

Ruby にはプロパティがありません。別のオブジェクト内のインスタンス変数にアクセスするたびに、メソッドを使用してアクセスする必要があります。

于 2011-01-20T22:14:30.793 に答える
15

オブジェクトのメソッドを取得する 2 つの方法:

my_object.methods
MyObjectClass.instance_methods

Object 基底クラスから継承されたメソッドのリストを削除するために私が行うことの 1 つは、次のとおりです。

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

これを行うには、次の 2 つの方法があります。

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"

もう1つは次のとおりです。

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 に答える