Список методов экземпляра текущего класса

У меня есть экземпляр o класса o. Я хотел бы знать, чем способна o.

o.methods даст мне много методов. Поэтому я обычно делаю o.methods - Object.instance_methods. Но это не краткий.

Я хочу сделать что-то вроде o.methods - o.class.superclass.instance_methods. То есть, только методы, определенные в o.

Есть ли другой способ?

Ответ 1

Вы можете использовать метод Module#instance_methods:

o.class.instance_methods(false)


Предупреждение Документация кажется неправильной, она говорит, что:

Без аргумента или с аргументом, который является ложным, экземпляр методы в моде возвращаются, в противном случае методы в моде и моде возвращаются суперклассы.

Но на самом деле параметр по умолчанию: true:

String.instance_methods.size
# => 184
String.instance_methods(false).size
# => 130