cuando se utiliza attr_accessor para definir los atributos de una clase, Ruby utilizando refexión, definir un par de métodos, para cada atributo declarado, uno para obtener el valor y la otra para establecer, una variable de instancia del mismo nombre del atributo
esto se puede ver utilizando métodos
p A.instance_methods
[:x, :x=, :y, :y=, :nil?, :===, :=~, :!~, :eql?, :hash, :<=>, :class, :singleton_class, :clone, :dup, :initialize_dup, :initialize_clone, :taint, :tainted?, :untaint, :untrust, :untrusted?,..
por lo que este atributos son accesibles, fuera de la clase, con
p "#{a.x},#{a.y}"
o dentro de la clase a través de la instancia correspondiente variable de
class A
...
def attributes
[@x,@y]
end
...
end
p a.attributes #=> [5,10]
Nota: attrs volverá * todos * variables de instancia, en lugar de solo las expuestas por 'attr_accessor' – Jonah
@Jonah: sí, esa era la suposición de entonces. Para un método más preciso, uno puede referirse a [esta respuesta] (http://stackoverflow.com/a/34440466/125816). –