require 'delegate'

a = Object.new
def a.f
  p 1
end

b = Object.new
def b.f
  p 2
end
c = SimpleDelegator.new( a )
c.f

p c.__getobj__
c.__setobj__ SimpleDelegator.new( b )

c.f