Получение имени класса из метода инициализации, когда класс унаследован от Hash

У меня есть класс, который наследуется от Hash. Когда сам этот класс наследуется, я хочу знать имя класса наследующего класса из метода initialize. Когда я вызываю self, я получаю {}, который не знает о методе name.

class Foo < Hash
  def initialize
    # Here i want to know that the class is Foo
  end
end

Как получить имя класса?


person rausch    schedule 27.09.2011    source источник


Ответы (2)


Это очень просто: self.class.name

person Daniel Brockman    schedule 27.09.2011

Ответ Даниэля Брокмана вернет вам строку, если вы хотите выполнить проверку:

if self.kind_of?(Foo)
  #whatever you want
end

Это связано с намерением инициализатора, когда вы вызываете Foo.new, экземпляр всегда будет экземпляром класса Foo или дочерним, поэтому я не понимаю, что вы пытаетесь сделать.

person danpickett    schedule 27.09.2011