私は同じことを思っていたので、私はコンソールでプレーしてきました。 楽しいもの:
class Parent
class << self
attr_accessor :something
def something(value = nil)
@something = value ? value : @something
end
def inherited(subclass)
self.instance_variables.each do |var|
subclass.instance_variable_set(var, self.instance_variable_get(var))
end
end
end
attr_accessor :something
self.something = 'Parent Default'
def something(value = nil)
@something = value ? value : @something ? @something : self.class.something
end
end
class Child < Parent
# inherited form Parent.something
end
class GrandChild < Child
something "GrandChild default"
end
結果で:
Parent.something
# => "Parent Default"
Parent.something = "Parent something else"
# => "Parent something else"
Parent.something
# => "Parent something else"
parent = Parent.new
# => #<Parent:0x007fc593474900>
parent.something
# => "Parent something else"
parent.something = "yet something different"
# => "yet something different"
parent.something
# => "yet something different"
parent.class.something
# => "Parent something else"
Child.something
# => "Parent Default"
child = Child.new
# => #<Child:0x007fc5934241f8>
child.something
# => "Parent Default"
GrandChild.something
# => "GrandChild default"
GrandChild.something("grandchild something else")
# => "grandchild something else"
GrandChild.something
# => "grandchild something else"
GrandChild.superclass.something
# => "Parent Default"
grandchild = GrandChild.new
# => #<GrandChild:0x007fc5933e70c8>
grandchild.something
# => "grandchild something else"
grandchild.something = "whatever"
# => "whatever"
GrandChild.something
# => "grandchild something else"
grandchild.something
# => "whatever"
"このパターンが呼び出されるかわからない" - 'Array'。 –