En un capítulo anterior se trató brevemente las variables instancia, pero no se hizo mucho con ellas. Las variables instancia de un objeto son sus atributos, eso que diferencia a un objeto de otro dentro de la misma clase. Es importante poder modificar y leer estos atributos; lo que supone definir métodos denominados accesores de atributos. Veremos en un momento que no siempre hay que definir los métodos accesores explícitamente, pero vayamos paso a paso. Los dos tipos de accesores son los de escritura y los de lectura.
ruby> class Fruta ruby| def set_kind(k) # escritor ruby| @kind = k ruby| end ruby| def get_kind # lector ruby| @kind ruby| end ruby| end nilx ruby> f1 = Fruta.new #<Fruta:0x401c4410> ruby> f1.set_kind("melocotón") #utilizamos el escritor "melocotón" ruby> f1.get_kind #utilizamos el lector "melocotón" ruby> f1 #inspeccionamos el objeto #<Fruta:0x401c4410 @kind="melocotón">
ruby> class Fruta ruby| def kind=(k) ruby| @kind = k ruby| end ruby| def kind ruby| @kind ruby| end ruby| end nil ruby> f2 = Fruta.new #<Fruta:0x401c30c4> ruby> f2.kind = "banana" "banana" ruby> f2.kind "banana"
En estos momentos es adecuada una pequeña disgresión. Ya se habrá notado que cuando deseamos ver directamente un objeto se nos muestra algo críptico como lo siguiente #<Fruta:0x401c30c4>. Este es un comportamiento por defecto que se puede modificar. Todo los que se necesita es definir un método denominado inspect. Éste puede devolver una cadena que describa el objeto de una forma razonable, incluyendo el estado de alguna o todas las variables instancia.
Un método relacionado es to_s (convertir a cadena) que se utiliza al imprimir un objeto. En general se puede pensar que inspect es una herramienta para cuando se escriben y depuran programas, y to_s una forma de refinar la salida de un programa. eval.rb utiliza inspect cuando muestra resultados. Se puede utilizar el método p para obtener con sencillez resultados para la depuración de programas.