为什么 Ruby 告诉我 :class 是在 Class(内核)而不是对象上定义的?

Why does Ruby tell me that :class is defined on Class(Kernel) and not Object?

取Ruby中的任何class并询问它在哪里定义了某些方法:

Object.method :name
#<Method: Class(Module)#name>

好的,很好。因此,我可以使用 pry 或转到 ruby-doc.org 并阅读有关 Module 上定义的 :name 方法的信息。

我的问题是,这是怎么回事:

Object.method :class
#<Method: Class(Kernel)#class>

我没有看到 :class 方法在内核模块中的定义位置。我看到它在对象 class 上定义。有人可以为我澄清一下吗?

内核模块包含在 class 对象中,因此它的方法在每个 Ruby 对象中都可用。

内核实例方法记录在 class 对象中,而模块方法记录在此处。这些方法在没有接收器的情况下被调用,因此可以以函数形式调用。

参考:http://ruby-doc.org/core-2.3.0/Kernel.html