请帮助我获得一个类中声明的所有实例变量,就像instance_methods
显示一个类中所有可用的方法一样.
class A
attr_accessor :ab, :ac
end
puts A.instance_methods #gives ab and ac
puts A.something #gives me @ab @ac...
请帮助我获得一个类中声明的所有实例变量,就像instance_methods
显示一个类中所有可用的方法一样.
class A
attr_accessor :ab, :ac
end
puts A.instance_methods #gives ab and ac
puts A.something #gives me @ab @ac...
你可以使用instance_variables
:
A.instance_variables
但这可能不是您想要的,因为这会得到classA
中的实例变量,而不是该类的实例.所以你可能想要:
a = A.new
a.instance_variables
但是请注意,仅仅调用attr_accessor
并没有定义任何实例变量(它只是定义了方法),所以在显式设置它们之前,实例中不会有任何变量.
a = A.new
a.instance_variables #=> []
a.ab = 'foo'
a.instance_variables #=> [:@ab]