类与其实例之间的区别

时间:2013-02-11 05:15:06

标签: ruby

Ruby如何在内部区分类及其实例,例如下面的MyClassobj?如何允许创建MyClass但不包含obj的实例?

MyClass = Class.new
obj = MyClass.new

1 个答案:

答案 0 :(得分:2)

它没有区别。 MyClassClass的一个实例(与objMyClass的实例的方式相同),它实现了new method和{{3} } 才不是。它就是那么简单 - 这里没有什么特别不寻常的事情发生,Class#new就像其他方法一样。

在这里我们可以看到每个对象类的祖先:

MyClass = Class.new
obj = MyClass.new

MyClass.class.ancestors  #=> [Class, Module, Object, Kernel, BasicObject]
obj.class.ancestors      #=> [MyClass, Object, Kernel, BasicObject]