如何获取在ruby中已定义方法的类?

时间:2018-08-01 09:11:47

标签: ruby inheritance

具有以下代码段:

class Foo
  def initialize
    puts self.class
  end
end

class Bar < Foo
  def bark
    puts self.class
  end
end

class Fizz < Bar
end

Fizz.new.bark

此代码段将输出两次Fizzlive example)。我想找到一些替换self.class的东西,它允许该程序输出Foo(来自初始化),然后输出Bar(来自树皮)。

我当前的解决方案是对函数名称进行硬编码,但是我想提供一些动态的东西。

1 个答案:

答案 0 :(得分:4)

这有效。 (不过,可能有更好的方法。

class Foo
  def initialize
    puts method(__callee__).owner
  end
end

class Bar < Foo
  def bark
    puts method(__callee__).owner
  end
end

class Fizz < Bar
end

Fizz.new.bark
# >> Foo
# >> Bar