Ruby instance_eval für eine Klasse mit attr_accessor

Ich verstehe den grundlegenden Unterschied zwischeninstance_eval undclass_eval. Was ich jedoch beim Herumspielen entdeckt habe, ist etwas Seltsamesattr_accessor. Hier ist ein Beispiel:

A = Class.new
A.class_eval{ attr_accessor :x }

a = A.new
a.x = "x"
a.x
=> "x"  # ... expected

A.instance_eval{ attr_accessor :y }

A.y = "y"
=> NoMethodError: undefined method `y=' for A:Class

a.y = "y"
=> "y"      # WHATTT?

Wie kommt es, dass:

das instance_eval hat beim Accessor nicht auf unsere A-Klasse (Objekt) zugegriffenes dann tatsächlich auf Instanzen von A hinzugefügt?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage