这就是我正在做的事情:
$ cat 1.rb
#!/usr/bin/env ruby
class A
@a = 1
@@b = 2
def self.m
p @a
p @@b
end
end
class B < A
end
class C < A
@@b = 3
end
B.m
$ ./1.rb
nil
3
我希望看到1
和2
。我真的不明白为什么,我能做什么?
答案 0 :(得分:2)
这些其他帖子可以帮助您解决问题:
类变量可由子类访问,但绑定到类对象的实例变量不是。
class A
@a = 1 # instance variable bound to A
@@b = 2 # class variable bound to A
end
class B < A; end # B is a subclass of A
# B has access to the class variables defined in A
B.class_variable_get(:@@b) # => 2
# B does not have access to the instance variables bound to the A object
B.instance_variable_get(:@a) # => nil
绑定到类对象的实例变量通常称为&#39;类实例变量&#39;。