问题 仅当前类的实例方法列表


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

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

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

还有其他方法吗?


8682
2017-07-25 13:17


起源

是否 o.methods(false) 工作? - Sergio Tulentsev
@SergioTulentsev不,那不行,因为的意思 false 论证 methods 是仅列出单例方法,例如。 'foo'.methods(false) # => []。 - toro2k


答案:


您可以使用该方法 Module#instance_methods

o.class.instance_methods(false)


警告 文档似乎是错误的,它说:

没有争论, 要么 参数是假的,实例   返回mod中的方法,否则返回mod和mod中的方法   返回超类。

但实际上参数默认是 true

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

16
2017-07-25 13:21