您可以创建一个类变量(数组),并在构造函数(initialize)中将新实例推入其中.
class Foo
@@instances = []
attr_accessor :name
def initialize name
@name = name
@@instances << self
end
def self.instances
@@instances
end
end
Foo.new("test")
Foo.new("test2")
Foo.instances.each do |i|
puts i.name
end
Run Code Online (Sandbox Code Playgroud)
我认为OP可能一直在询问您是否可以访问私有,类和实例变量.
在irb或某些程序中试试这个:
p YourClass.methods.sort
在那里你应该看到一堆以_methods或_variables结尾的方法.每个方法都有各种方法,因此您可以轻松地执行以下操作:
YourClass.instance_variables.each do |x|
p x
end
Run Code Online (Sandbox Code Playgroud)
你对班级成员究竟是什么意思?
如果你的意思是实例变量,你可以得到通道instance.instance_variables.如果是类变量,则类似于klass.class_variables.
如果你想得到所有的变量和方法,你另外调用instance.methods(它实际上返回字符串,并且由于别名方法等而变得棘手)
| 归档时间: |
|
| 查看次数: |
519 次 |
| 最近记录: |