直接 `self.class` を呼ぶと、#class がオーバーライドされている可能性があるので任意のオブジェクトに対して呼ぶことはできません。よってKernel#classを直接呼ぶ必要があります。そこで、以下のように#classのUnboudMethodを得て、それにレシーバを与えて呼び出すことで解決できます。 def self.class raise "boom!" end get_class = Kernel.instance_method(:class) # and later p get_class.bind(self).call とはいえパフォーマンスがあまりよくないのでもっといい方法があればそっちを使いたい。 あと Kernel#class の上書きはやめてくださいお願いしますm(_ _)m。 [追記] 別解もあるようです。 このままだと汎用的には使えないのでFixnum