У меня есть класс:
class TestClass
def method1
end
def method2
end
def method3
end
end
Как я могу получить список моих методов в этом классе ( method1
, method2
, method3
)?
ruby
reflection
ruby-1.9.2
Владимир Цуканов
источник
источник
print TestClass.new.instance_methods
, я получаю эту ошибкуmy_class.rb:10:in <main>: undefined method instance_methods for #<TestClass:0x96b9d20> (NoMethodError)
TestClass.new.methods
. Возможно, «это» было двусмысленным в моем ответе.[:method1]
взамен получил.чтобы получить только методы, принадлежащие только этому классу.
TestClass.instance_methods(false)
вернет методы из вашего данного примера (поскольку они являются методами экземпляра TestClass).источник
или без всех унаследованных методов
(Было 'TestClass.methods - Object.methods')
источник
TestClass.methods(false)
.TestClass.methods(false)
возвращается пустымmethod1
,method2
илиmethod3
, поскольку это методы экземпляров класса, а не методы самогоTestClass
объекта.Вы можете получить более подробный список (например, структурированный путем определения класса) с такими жемчужинами, как отладка или просмотр .
источник
источник
Согласно Ruby Doc instance_methods
Посмотрим на результат.
источник
Чтобы получить только собственные методы и исключить унаследованные:
Изнутри экземпляра:
Снаружи:
Добавьте его в класс:
(с Ruby 2.6.x)
источник