質問

私は、オブジェクトのすべての属性を取得したい場合たとえば、Pythonで、私はこのようなことを行うことができます:

>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', 'pydebug', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']

私は何かのドキュメントを表示したい場合は、私はヘルプ機能を使用することができますか。

>>> help(str)

はRubyで同様のことを行うにはどのような方法がありますか?

役に立ちましたか?

解決

確かに、それはPythonでよりもさらに簡単です。あなたが探しているものの情報に応じて、試してみてください。

obj.methods

(同様Objectのメソッドを取得ではなく)あなたがobjのために定義されたメソッドだけをしたい場合
obj.methods - Object.methods

また、興味深いのは、次のようなものをやっています

obj.methods.grep /to_/

インスタンス変数を取得するには、この操作を行います。

obj.instance_variables

とクラス変数のために:

obj.class_variables

他のヒント

あなたが使用よりも、何かに呼び出すことができることをすべてのメソッドをしたい場合は、

>>> x.methods

あなたには、いくつかのヘルプ情報が必要な場合は、そのクラスの前にヘルプを呼び出す

>>> help x.class

ヘルプIRB内里のラッパーです。

あなたがオブジェクトを持っている、とあなたはそれが何に反応する方法を知りたい場合は、(thenduksがこの結果に言及したことやトリックのすべて。)obj.methodsを実行することができます。

あなたはクラスを持っている場合は、クラスメソッドが空く何であるかを見るためにklass.methodsを実行することができ、あるいはあなたがそのクラスのインスタンスで使用可能な方法を知っているklass.instance_methodsを実行することができます。それは、クラスで定義され、継承されていなかった何方法を説明しますbecuase klass.instance_methods(false)は、便利です。

ルビー内のpythonが行う方法を方法のヘルプテキストを取得する方法が今あります。

Rubyで作成された各オブジェクトに含まれているObjectSpaceと呼ばれるモジュールがあります。それはあなたがプロセスの現在のコンテキストをイントロスペクトヘルプというメソッドのすべてを保持しています。 IRBでは、現在のirbセッションのトップレベルのコンテキストでObject:Mainコンテキストで始まります。その後、time = Time.nowような何かをして、そのオブジェクトのコンテキストにあなたを取るだろうし、あなたがそのオブジェクトのirb timeメソッドを呼び出すことなく、内側からそれを点検できObjectSpaceを行うことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top