Tengo una clase:
class TestClass
def method1
end
def method2
end
def method3
end
end
¿Cómo puedo obtener una lista de mis métodos de esta clase ( method1
, method2
, method3
)?
ruby
reflection
ruby-1.9.2
Vladimir Tsukanov
fuente
fuente
print TestClass.new.instance_methods
, aparece este errormy_class.rb:10:in <main>: undefined method instance_methods for #<TestClass:0x96b9d20> (NoMethodError)
TestClass.new.methods
. Tal vez "eso" fue ambiguo en mi respuesta.[:method1]
lugar obtendrías .para obtener solo métodos que pertenecen solo a esa clase.
TestClass.instance_methods(false)
devolvería los métodos de su ejemplo dado (ya que son métodos de instancia de TestClass).fuente
o sin todos los métodos heredados
(Era 'TestClass.methods - Object.methods')
fuente
TestClass.methods(false)
.TestClass.methods(false)
vuelve vacíomethod1
,method2
omethod3
, ya que son métodos de instancias de la clase, no métodos delTestClass
objeto en sí.Puede obtener una lista más detallada (por ejemplo, estructurada mediante la definición de clase) con gemas como depuración o looksee .
fuente
fuente
Según Ruby Doc instance_methods
Veamos el resultado.
fuente
Para obtener solo métodos propios y excluir los heredados:
Desde dentro de la instancia:
Desde afuera:
Agréguelo a la clase:
(con rubí 2.6.x)
fuente