【发布时间】:2011-01-06 06:28:27
【问题描述】:
ruby 类实例的东西让我头疼。我明白了……
class Foo
@var = 'bar'
end
...@var 是已创建类的实例上的变量。
但是如何创建子类可覆盖的类变量呢?
这是我将在 Python 中执行的示例:
class Fish:
var = 'fish'
def v(self):
return self.var
class Trout(Fish):
var = 'trout'
class Salmon(Fish):
var = 'salmon'
print Trout().v()
print Salmon().v()
哪些输出:
trout
salmon
我如何在 ruby 中做同样的事情?
【问题讨论】:
-
不应该是第一个代码块中的@@var 吗?
-
我正在阅读 David Black 的“The Well-Grounded Rubyist” (manning.com/black2)。他很好地解释了该领域的所有细微差别
-
Jean:不。如果我使用
@@var,那么子类将覆盖父类。请参阅 hobodave 的链接。特别是在示例中如何覆盖“2”。
标签: ruby class inheritance class-variables