开发者

Ruby - How to remove a setter on an object

开发者 https://www.devze.com 2022-12-23 23:53 出处:网络
Given a class like this: class B class <<开发者_Python百科; self attr_accessor :var end end Suppose I can\'t modify the original source code of class B.How might I go about removing the setter

Given a class like this:

class B
    class <<开发者_Python百科; self
        attr_accessor :var
    end
end

Suppose I can't modify the original source code of class B. How might I go about removing the setter on the class variable var? I've tried using something like B.send("unset_method", "var="), but that doesn't work (nor does remove_method, or overwriting that method with a var= method that doesn't do anything). Any ideas?


Try:

class B
  class << self
    undef var=
  end
end

You may want to use remove_method instead:

class B
  class << self
    remove_method :var=
  end
end

To see the differences, go to: http://www.nach-vorne.de/2008/2/28/undef_method-remove_method/


class <<B ; remove_method :var= ; end
0

精彩评论

暂无评论...
验证码 换一张
取 消