Ruby类初始化(构造函数)是私有方法还是公共方法?

时间:2012-01-06 14:48:37

标签: ruby access-specifier

在ruby中初始化方法(构造函数)是私有的还是公共的?

2 个答案:

答案 0 :(得分:16)

让我们看看:

class Test
  def initialize; end
end

p Test.new.private_methods.sort.include?(:initialize)

这会打印true,因此initialize是一种私有方法。这是有道理的,只有在创建对象时才由new类方法调用。如果我们想要,我们可以这样做:

class Test
  def initialize
    @counter = 0
  end

  def reset!
    initialize
  end
end

如果它不仅仅是简单的变量初始化,那么滥用这样的构造函数可能会导致问题。

答案 1 :(得分:4)

类中的initialize方法自动变为私有。

您可以使用以下方式进行检查:

puts ClassName.private_methods.sort