¿Dónde se definen los métodos en el nivel superior rubí?

En el nivel superior, la definición del método debe dar lugar a métodos privados enObject, y las pruebas parecen confirmar esto:

def hello; "hello world"; end

Object.private_instance_methods.include?(:hello) #=> true
Object.new.send(:hello) #=> "hello world"

Sin embargo, lo siguiente también funciona en el nivel superior (self.meta es el eigenclass demain):

self.meta.private_instance_methods(false).include?(:hello) #=> true

Parece que elhello El método se define simultáneamente en el eigenclass de main así como enObject. ¿Que esta pasando? Tenga en cuenta que elfalse parámetro aprivate_instance_methods excluye los métodos de superclase de la lista de métodos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta