首页 > 解决方案 > 如何获取已在 ruby​​ 中定义方法的类?

问题描述

有下面的片段:

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

此代码段将输出两次Fizz现场示例)。我想找到一些可以替换的东西,self.class它允许这个程序输出Foo(从初始化)然后Bar(从树皮)。

我目前的解决方案是硬编码函数名称,但我想要更动态的东西。

标签: rubyinheritance

解决方案


这行得通。(不过,可能有更好的方法。

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

推荐阅读