以下是我的代码,其中包含类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
为什么?类实例变量的范围是什么?
答案 0 :(得分:2)
Q1:因为它们是这样定义的。
Q2:它是类(它是Class
类的一个实例)。