如何从子类访问类实例变量

时间:2014-09-28 13:20:18

标签: ruby

以下是我的代码,其中包含类MyClass和类OtherClass,它继承了MyClass。我有一个类变量@@my_new_var和一个类实例变量@my_var

class MyClass
  @@my_new_var = "test"
  @my_var = 1
  def self.read; @my_var end
  def ins_method; @my_var = 2 end
end

class OtherClass < MyClass
  def self.read_another; @@my_new_var end
  def self.test; @my_var end
end

我们可以从子类访问类变量:

OtherClass.read_another # => test

但我们无法从子类访问类实例变量:

MyClass.read # => 1
MyClass.new.ins_method # => 2
OtherClass.read # => nil
OtherClass.test # => nil

为什么?类实例变量的范围是什么?

1 个答案:

答案 0 :(得分:2)

Q1:因为它们是这样定义的。

Q2:它是类(它是Class类的一个实例)。