以下打印 Bar
两次:
class Foo
def foo
p self.class # => prints Bar
end
end
class Bar < Foo
def foo
p self.class # => prints Bar
super
end
end
b = Bar.new
b.foo
如何打印出来
Bar
Foo
?即我想知道每个方法定义在哪个类上。
最佳答案
要捕获最初定义方法的上下文,您可以使用 define_method
而不是 def
来获得适当的闭包。一个简单的例子:
class Foo
klass = self
define_method(:foo){p klass}
end
class Bar < Foo
def foo
p self.class
super
end
end
b = Bar.new
b.foo
关于ruby - 继承改变方法类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23528378/