• 締切済み

インスタンス内から自分のクラス名を取得する方法

クラスインスタンス内から自分のクラス名を取得しようと思うと、self.class.nameで取得できますが、type.nameでも取得できます。 しかし、typeは非推奨メソッドとなっているため、警告が出て、このままでは使用することができません。 素直にself.classを使えばいいのかもしれませんが、selfのワンクッションがどうにも気に入りません。 スマートな記述方法あったら教えて下さい。 # self.class.nameを使用する場合 class MyClass  def print_classname   puts self.class.name   # puts class.name これはエラー  end end # type.nameを使用する場合 class MyClass2  def print_classname   puts type.name # これはdeprecatedの記述で警告が出る  end end

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

self を書きたくないということなら、 alias :xclass :class しておいて、 xclass.name するくらいしかないと思います。スマートとは思いませんけど。 逆に、インスタンスメソッド定義の中で、class以外のメソッド呼び出しの時もselfを省略しないで書くことにすれば、全部統一が取れます。

ggaogg
質問者

お礼

ありがとうございます。 aliasは考慮から外れていました。 self.を書きたくないのではなくて、type書くとself.が必要ないのに、classで書く時はself.が必要というのが無駄だなと思ったからです。

ggaogg
質問者

補足

補足・・(うまく伝わっていないかもしれないので念のため) 考慮から外れていたというのは、思いつきませんでした、ということです。 つまりありがたいお答えですありがとうございますということです。