Selfish では Self を真似るため(本当の目的は delegation を行なうため)にメソッドをオブジェクトとして持つ必要があります。Self のメソッドオブジェクトはコードにおける暗黙の self の差し替えが可能です。でもなぜそうした目的のためにわざわざ Selfish::MethodObject なんて作ったの?それは Ruby 標準の ::Method のインスタンスじゃダメなの?と思った方もおられることでしょう。 ダメです!というのも、Method オブジェクトはそもそも new して簡単に作れるものじゃないという点で苦しいわけです。でもそれだったら、Module#define_method 使えばいいんじゃないのかな? c = Class.new c.instance_eval do define_method(:sum){|x, y| x + y} end c.n