当类继承自 Hash 时,从初始化方法中获取类名

发布于 2024-12-07 07:57:22 字数 298 浏览 1 评论 0原文

我有一个继承自 Hash 的类。当这个类本身被继承时,我想从 initialize 方法中知道继承类的类名。当我调用 self 时,我得到 {},它不知道 name 方法。

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

我如何获得班级名称?

I have a class that inherits from Hash. When this class itself gets inherited from, I want to know the class name of the inheriting class from within the initialize method. When I call self I get {}, which doesn't know of the name method.

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

How do I get the class name?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

没︽人懂的悲伤 2024-12-14 07:57:22

非常简单:self.class.name

It’s very simple: self.class.name

清浅ˋ旧时光 2024-12-14 07:57:22

如果您想进行检查,Daniel Brockman 的答案将返回字符串:

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

这是由于初始化程序的意图,当您调用 Foo.new 时,实例将始终是 Foo 类或子类的实例,所以我'我对你想要做什么感到困惑。

Daniel Brockman's answer will return you the string if you want to do a check:

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

The thing is due to the intent of the initializer, when you call Foo.new the instance will always be an instance of the class Foo or child, so I'm confused about what you're trying to do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文