Ruby - 删除继承的方法

huh*_*tty 11 ruby

是否有可能删除Ruby中的一些继承方法?我的意思是,我可以覆盖它,但还有其他方法吗?

Class ABC
end

a = ABC.new

puts a.id
Run Code Online (Sandbox Code Playgroud)

这里,方法id是继承自Object连同其他方法,如tap,class,type等我想删除这些方法.

编辑:我正在使用Ruby 1.8.7

Cho*_*ett 17

是 - undef_method :foo将阻止对方法的任何调用foo(与remove_method :foo从子对象中删除方法的对比,但仍然通过继承链).

但是,为什么你要删除这样的东西id呢?

  • 我正在使用一个类(一种DSL)作为xml(一个定义良好的格式,没有深度嵌套)的映射,并使用方法缺失来访问xml节点.例如,如果xml有一个名为"book"的节点,我将使用a.book访问节点内容.如果xml节点具有名称(我无法控制),如"id","type"等,则不会触发此method_missing.删除这些方法有什么问题吗?我只在这个映射中使用该类,而不是其他任何东西.有什么方法我不应该删除吗? (2认同)