我注意到如果我创建一个继承自的子类Datetime
,.now
它将返回子类实例,而不是Datetime
实例。
class MyDateTime < DateTime
end
MyDateTime.now
>#<MyDateTime: 2012-06-05T16:42:57+08:00 ((2456084j,31377s,900801494n),+28800s,2299161j)>
这似乎很神奇。我无法在自己的课堂上重现这种行为:
class A
def self.a
return A.new
end
end
class B < A
end
B.a
#<A:0x00000001e22358>
我试图阅读它的源代码,DateTime
但它是用 C 编写的。是否可以编写一个类方法来返回它所属的类的实例?