Frage

Zum Beispiel in Python, kann ich Dinge wie dies tut, wenn ich alle Attribute für ein Objekt zu bekommen:

>>> 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']

Oder wenn ich die Dokumentation von etwas sehen möchte, kann ich die Hilfe-Funktion:

>>> help(str)

Gibt es eine Möglichkeit ähnliche Dinge in Ruby zu tun?

War es hilfreich?

Lösung

Sicher, es ist noch einfacher als in Python. Je nachdem, welche Informationen Sie suchen, versuchen Sie:

obj.methods

, und wenn Sie wollen nur die für obj definierten Methoden (im Gegensatz zu Methoden auf Object immer auch)

obj.methods - Object.methods

Auch interessant macht Sachen wie:

obj.methods.grep /to_/

Instanzvariablen zu erhalten, dies tun:

obj.instance_variables

und für Klassenvariablen:

obj.class_variables

Andere Tipps

Wenn Sie alle Methoden möchten, dass Sie sich auf etwas als die Verwendung anrufen

>>> x.methods

Wenn Sie etwas Hilfe Informationen wollen, dann Hilfe vor seiner Klasse aufrufen

>>> help x.class

Hilfe ist ein Wrapper für ri innerhalb irb.

Wenn Sie ein Objekt haben, und Sie wollen wissen, welche Methoden es reagiert, können Sie obj.methods laufen (und alle Tricks, dass thenduks auf diesem Ergebnis erwähnt wurde.)

Wenn Sie eine Klasse haben, können Sie klass.methods laufen, um zu sehen, was Klassenmethoden verfügbaren sind, oder Sie können klass.instance_methods laufen zu wissen, welche Methoden auf Instanzen dieser Klasse zur Verfügung stehen. klass.instance_methods(false) ist nützlich, becuase es Ihnen sagt, welche Methoden von der Klasse definiert wurden und nicht vererbt.

Es gibt jetzt Art und Weise Hilfetext für eine Methode in Ruby den Weg Python tut zu erhalten.

Es gibt ein Modul ObjectSpace genannt, die in jedes Objekt in Ruby erstellt enthalten ist. Es hält alle Methoden, die helfen, Sie aktuellen Kontext des Prozesses introspect. In irb beginnen Sie in Object:Main Kontext, die Top-Level-Kontext für die aktuelle Sitzung irb ist. Dann könnten Sie so etwas wie time = Time.now tun und dann irb time tun, die Sie in dieses Objekts Kontext nehmen würde und man konnte es von innen inspizieren, ohne auf diesem Objekt ObjectSpace Methoden aufrufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top