Скажем, у меня есть следующие 2 класса:
class A
def a_method
end
end
class B < A
end
Можно ли обнаружить изнутри (экземпляра) класса B, что метод a_method
только определен в суперклассе, поэтому не переопределяется в B?
Обновление: решение
Хотя я пометил ответ Чака как «принятый», позже Паоло Перрота заставил меня понять, что решение, по-видимому, может быть проще, и, вероятно, оно будет работать и с более ранними версиями Ruby.
Определение того, переопределен ли «a_method» в B:
B.instance_methods(false).include?("a_method")
И для методов класса мы используем singleton_methods
аналогично:
B.singleton_methods(false).include?("a_class_method")