如何检查`initialize`是否在类中直接定义

loc*_*boy 0 ruby

我正在尝试检查是否initialize在类中直接定义.这是一些示例命令行代码,用于说明我正在尝试执行的操作:

class Something
  def initialize; end
end

Something.method_defined?(:initialize)
# => false 
Run Code Online (Sandbox Code Playgroud)

有没有办法检测是否initialize在类中直接定义?

Mat*_*son 6

initialize 显然总是私密的,所以你需要这样做:

Something.private_instance_methods(false).include?(:initialize)
Run Code Online (Sandbox Code Playgroud)

false论点意味着祖先不被搜查.

文档:http://ruby-doc.org/core-2.2.2/Module.html#method-i-private_instance_methods