有没有办法以编程方式知道某个方法是否已被子类覆盖?像这样工作的东西:
class BaseModel
def create
puts "superclass"
end
end
class SomeModel < BaseModel
def create
puts "subclass"
end
end
puts SomeModel.overridden_instance_methods #=> [:create]
有什么想法吗?
最佳答案
SomeModel.instance_methods(false) & BaseModel.instance_methods
false
使 instance_methods
不包含继承的方法。然后,我们使用集合交集来查找之前在 BaseModel(或 Object)上定义的 SomeModel 上定义的所有方法。
关于ruby - 如何查看 Ruby 中类层次结构中方法的定义和重写位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3488203/