调用超级超级方法

Vin*_*ent 15 ruby

有可能super.super在overriden方法中做一些事情吗?也就是说,绕过直接父母的超级并称为"祖父母"超级?

sep*_*p2k 22

这不是推荐,但你想要的这样的:

grandparent = self.class.superclass.superclass
meth = grandparent.instance_method(:the_method)
meth.bind(self).call
Run Code Online (Sandbox Code Playgroud)

这首先得到祖父母的类,然后调用instance_method它来UnboundMethod代表祖父母的版本the_method.然后它使用UnboundMethod#bindMethod#call在当前对象上调用祖父母的方法.