在完成元编程 Ruby 中的“对象模型”一章后,我感到很困惑。对象(某个类的实例)的方法是否与 Ruby 中其类的实例方法相同?听起来是真的。因为我们知道对象的方法存储在它的类中。
class W;end
W.methods == Class.instance_methods # => true
# Also
String.instance_methods == "abc".methods # => true
W
是 的一个实例Class
。但如果我重新打开W
并为它定义一个新方法,那就是混淆了。
class W
def self.foo
"bar"
end
end
W.methods == Class.instance_methods # => false
W
是 的实例Class
,W
的方法是Class
的实例方法。但如果:foo
没有存储在 中Class
,那么它存储在哪里?