仅当前类的实例方法列表

Mic*_*are 11 ruby

我有一个o班级的实例O.我想知道什么o是能力的.

o.methods会给我很多方法.所以我通常这样做o.methods - Object.instance_methods.但这并不简洁.

我想做点什么o.methods - o.class.superclass.instance_methods.也就是说,只是O本身定义的方法.

还有其他方法吗?

tor*_*o2k 16

您可以使用以下方法Module#instance_methods:

o.class.instance_methods(false)
Run Code Online (Sandbox Code Playgroud)


警告文档似乎有误,它说:

如果没有参数,或者参数为false,则返回mod中的实例方法,否则返回mod和mod的超类中的方法.

但实际上参数默认为true:

String.instance_methods.size
# => 184
String.instance_methods(false).size
# => 130
Run Code Online (Sandbox Code Playgroud)