From: Chris Pine Date: 2003-01-03T03:21:21+09:00 Subject: How to call overridden methods (finally!) I thought I had come up with a clever way to call a method which has been overridden: module Foo def to_s 'just another Foo' end end class Bar include Foo def to_s 'proud to be a Bar' end def foo_to_s Foo.instance_method('to_s').bind(self).call end end puts Bar.new.to_s puts Bar.new.foo_to_s And it works! proud to be a Bar just another Foo However, if Foo is a class and Bar subclasses it, it doesn't work: proud to be a Bar ./test.rb:24:in `bind': bind argument must be an instance of Foo (TypeError) from ./test.rb:24:in `foo_to_s' from ./test.rb:29 So, my question is this: Why must bind's argument be an instance of Foo? Why not just a kind_of Foo? Could this be changed? Easily? Chris